這個是非常基本的一道面試題,但是要考慮周全。
首先反轉一個字符串:
基本思路是變成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(); }