给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例 1:
输入: "Let's take LeetCode contest" 输出: "s'teL ekat edoCteeL tsetnoc"
注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
思路:1.将字符串根据空格符进行分割,分割成4部分。
2.对于每一部分进行单独反转。
3.将每一部分进行反转之后,进行拼接(注意:在进行拼接时要加空格,最后一部分字符串要单独拼接,因为其后面没有空格)
public String reverseWords(String s) {
String[] words=s.split(" ");
StringBuilder sb=new StringBuilder();
int len=words.length;
if(words.length==1){
return reverseString(s);
}
else{
for(int i=0;i<len-1;i++){
sb.append(reverseString(words[i])+" ");
}
}
//最后一个字符串要单独加进去,因为它后面没有空格了
sb.append(reverseString(words[len-1]));
return sb.toString();
}
public String reverseString(String s){
char[] chars=s.toCharArray();
int start=0;
int end=s.length()-1;
while(start<end){
char temp=chars[start];
chars[start]=chars[end];
chars[end]=temp;
start++;
end--;
}
return new String(chars);
}