C# 如何从c结尾反转字符串2字符和2字符#
示例C# 如何从c结尾反转字符串2字符和2字符#,c#,.net,algorithm,C#,.net,Algorithm,示例字符串: A3148579 预期结果: 798514A3 我尝试了以下代码: public static string Reverse(string s) { char[] charArray = s.ToCharArray(); Array.Reverse(charArray); return new string(charArray); } 实际结果是9758413A 但是我想要798514A3 谢谢大家 使用Lambda表达式扩展数组类以包含
字符串:
A3148579
预期结果:
798514A3
我尝试了以下代码:
public static string Reverse(string s)
{
char[] charArray = s.ToCharArray();
Array.Reverse(charArray);
return new string(charArray);
}
实际结果是9758413A
但是我想要798514A3
谢谢大家
使用Lambda表达式扩展数组类以包含名为Split的新方法:
public static class MyArrayExtensions
{
/// <summary>
/// Splits an array into several smaller arrays.
/// </summary>
/// <typeparam name="T">The type of the array.</typeparam>
/// <param name="array">The array to split.</param>
/// <param name="size">The size of the smaller arrays.</param>
/// <returns>An array containing smaller arrays.</returns>
public static IEnumerable<IEnumerable<T>> Split<T>(this T[] array, int size)
{
for (var i = 0; i < (float)array.Length / size; i++)
{
yield return array.Skip(i * size).Take(size);
}
}
}
公共静态类MyArrayExtensions
{
///
///将阵列拆分为几个较小的阵列。
///
///数组的类型。
///要拆分的数组。
///较小阵列的大小。
///包含较小数组的数组。
公共静态IEnumerable拆分(此T[]数组,整数大小)
{
对于(变量i=0;i<(浮点)数组。长度/大小;i++)
{
收益返回数组。跳过(i*size)。获取(size);
}
}
}
测试新的数组类方法:
[TestMethod]
public void TestSplit2()
{
string str = "A3148579";
char[] array1 = new char[str.Length];
for (int i = 0; i < array1.Length; i++)
{
array1[i] = i;
}
// Split into smaller arrays of maximal 2 elements
IEnumerable<IEnumerable<int>> splited = array1.Split<int>(2);
int j = 0;
foreach (IEnumerable<int> s in splited){
j++;
}
log.InfoFormat("Splitted in to {0} smaller arrays.", j);
}
[TestMethod]
公共void TestSplit2()
{
string str=“A3148579”;
char[]array1=新字符[str.Length];
for(int i=0;i
最后,您只需反转生成的数组(较小)。您可以尝试下面的代码。这只是给您一个想法,您可以根据测试用例和需求进行更新。下面的代码适用于您刚才提到的输入。我没有考虑长度是否是奇数。你可以做你的研究和更新逻辑,这将帮助你学习和了解更多。
字符串输入=“A3148579”;
堆栈=新堆栈();
整数计数=0;
字符串输出=”;
对于(int i=0;i0)
{
输出+=stack.Pop().ToString();
}
您可以将初始字符串拆分为大小为2的块(例如,借助于子字符串
);请注意,tocharray()
返回char
s,即size=1
的块
让我们概括一下解决方案:现在我们有了size
块
代码:
using System.Linq;
...
public static string Reverse(string s, int size = 2) {
if (size < 1)
throw new ArgumentOutOfRangeException(nameof(size));
if (string.IsNullOrEmpty(s))
return s;
int n = s.Length / size + (s.Length % size == 0 ? 0 : 1);
return string.Concat(Enumerable
.Range(0, n)
.Select(i => i < n - 1 ? s.Substring(i * size, size) : s.Substring(i * size))
.Reverse());
}
Console.Write(Reverse("A3148579"));
798514A3
结果:
using System.Linq;
...
public static string Reverse(string s, int size = 2) {
if (size < 1)
throw new ArgumentOutOfRangeException(nameof(size));
if (string.IsNullOrEmpty(s))
return s;
int n = s.Length / size + (s.Length % size == 0 ? 0 : 1);
return string.Concat(Enumerable
.Range(0, n)
.Select(i => i < n - 1 ? s.Substring(i * size, size) : s.Substring(i * size))
.Reverse());
}
Console.Write(Reverse("A3148579"));
798514A3
这回答了你的问题吗?