给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例 1:
输入: "Let's take LeetCode contest" 输出: "s'teL ekat edoCteeL tsetnoc"
注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
思路
先spilt分隔空格,调用自己写的反转函数,最后用空格连接回来,StringBuilder在多次修改字符串时效率更高
class Solution {
public String reverseWords(String s) {
String[] word = s.split(" ");
for(int i=0;i<word.length;i++)
word[i] = reverse(word[i]);
StringBuilder ans = new StringBuilder(word[0]);
for(int i=1;i<word.length;i++)
ans.append(" "+word[i]);
return ans.toString();
}
String reverse(String s) {
char[] ch = s.toCharArray();
int n = ch.length;
for(int i=0;i<n/2;i++) {
char c = ch[i];
ch[i] = ch[n-1-i];
ch[n-1-i] = c;
}
return String.valueOf(ch);
}
}