效果:
輸入: "java and python"
輸出: "avaj dna nohtyp"
代碼:
版本1: 不考慮字符串開頭有空格,單詞間有多個空格空格的情況
public class StringReverse { // 翻轉一段字符串 public static void swapStr(char[] arr, int begin, int end) { while (begin < end) { char tmp = arr[begin]; arr[begin] = arr[end]; arr[end] = tmp; begin++; end--; } } public static String swapWords(String s) { if (s == null) { return null; } String ret = ""; if (!s.endsWith(" ")) { s += " "; } char[] charArr = s.toCharArray(); int begin = 0; for (int i = 0; i < charArr.length; ++i) { if (charArr[i] == ' ') { swapStr(charArr, begin, i - 1); begin = i + 1; } } ret = new String(charArr); return ret; } }
版本2:考慮開頭的空格,單詞間有多個空格
public static String swapWords(String s) { if (s == null) { return null; } String ret = ""; if (!s.endsWith(" ")) { s += " "; } char[] charArr = s.toCharArray(); int begin = 0; int i = 0; while (i < charArr.length) { while (charArr[i] == ' ' && i < charArr.length) { i++; } begin = i; // 獲取單詞的第一個字母對應的位置 while (charArr[i] != ' ') { // 找到單詞后第一個空格對應的位置 i++; } swapStr(charArr, begin, i - 1); ++i; } ret = new String(charArr); return ret; }