反转字符串中的单词
问题陈述
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例 1:
输入: “Let’s take LeetCode contest”
输出: “s’teL ekat edoCteeL tsetnoc”
代码实现
解法一:
1 2 3 4 5 6 7 8
| public String reverseWords(String s){ String words=s.split(" "); StringBuilder res=new StringBuilder(); for(String word:words){ res.append(new StringBulder(word).reverse().toString()+" "); } return res.toString().trim(); }
|
解法二:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| public String reverseWords(String s) { char[] cs = s.toCharArray(); reverse(cs, 0, cs.length - 1); int i = 0, j = 0; while(j < s.length()) { while(j < s.length() && cs[j] != ' ') { j++; } reverse(cs,i, j - 1); i = j + 1; j++; } return new String(cs);
}
private void reverse(char[] arr, int start, int end) { while (start < end) { char temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; ++start; --end; } }
|