题目描述
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例 1:
输入: "Let's take LeetCode contest" 输出: "s'teL ekat edoCteeL tsetnoc"
注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
思路
由于字符串中不会有任何额外的空格,根据空格来找单词,将每个单词依次进行字符串的反转即可,字符串的反转可以看我这篇博客:LeetCode反转字符串
AC代码(Java)
class Solution {
public String reverseWords(String s) {
char[] cl = s.toCharArray();
int start = 0;
int nextSpace = s.indexOf(' ',start); // 返回字符串s从索引start开始的第一个空格的索引,若没有,则返回-1
while(nextSpace != -1) {
reverse(cl,start,nextSpace - 1);
start = nextSpace + 1;
nextSpace = s.indexOf(' ',start);
}
reverse(cl,start,cl.length - 1);
return new String(cl);
}
public void reverse(char[] cl,int start,int end){
while(start < end){
char temp = cl[start];
cl[start] = cl[end];
cl[end] = temp;
start ++;
end --;
}
}
}