字符串按单词反转
/// <summary>
/// 我们将字符串input中,从input开始到end之间的子字符串反转
/// </summary>
/// <param name="input"></param>
/// <param name="begin"></param>
/// <param name="end"></param>
/// <returns></returns>
public static void Revert(char[] input, int begin, int end)
{
if (input == null || input.Length < end || begin > end) throw new ArgumentException("Please check the input parameters.");
for (int first = begin, last = end - 1; first < last; first++, last--)
{
char temp = input[first];
input[first] = input[last];
input[last] = temp;
}
}
接下来我们需要一个方法来调用它,该方法接受一个字符数组,第一步先首尾交换,反转字符串。然后我们寻找里面的空格,再将单词首尾依次交换:
public static void RevertWords(char[] input)
{
if (input != null && input.Length > 0)
{
Revert(input, 0, input.Length);
int begin = 0;
for (int index = begin; index < input.Length; index++)
{
if (input[index] == ' ')
{
int end = index;
Revert(input, begin, end);
begin = end + 1;
}
}
}
}
static void Main(string[] args)
{
char[] input = "I am student".ToArray();
RevertWords(input);
foreach (var c in input)
{
Console.Write(c);
}
}