这个是非常基本的一道面试题,但是要考虑周全。
首先反转一个字符串:
基本思路是变成Char数组,然后调用C#里面的方法,或者设定两个index,从头,尾向中间遍历,并交换。
方法一: Array.Reverse(char *). 注意在开始的时候要判断字符串为null或空。
public static string ReverseString(string input) { if (String.IsNullOrEmpty(input)) { return input; } char[] charArray = input.ToCharArray(); Array.Reverse(charArray); return new String(charArray); }
方法二: 交换字符。
public static string ReverseString1(string input) { if(String.IsNullOrEmpty(input)) { return input; } char[] charArray = input.ToCharArray(); char tmp; for(int i = 0, j = charArray.Length - 1; i < j; i++, j--) { tmp = charArray[i]; charArray[i] = charArray[j]; charArray[j] = tmp; } return new string(charArray); }
反转句子当中的单词:
public static string ReverseWords(string input) { if (String.IsNullOrEmpty(input)) { return input; } string[] splits = input.Split(' ').Select(str=> str.Trim()).ToArray(); StringBuilder output = new StringBuilder(); for(int i = splits.Length - 1; i >= 0 ; i--) { output.Append(splits[i]); if(i != 0) { output.Append(" "); } } return output.ToString(); }