给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例:
输入:“Let’s take LeetCode contest”
输出:“s’teL ekat edoCteeL tsetnoc”
提示:
在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
class Solution {
public String reverseWords(String s) {
int end = 0;
int count = 0;
char[] myCharArr = s.toCharArray();
for(int i = 0; i < myCharArr.length; i++) {
//连续非空格字符组成单词
if(' ' != myCharArr[i]) {
//存放每次非空格字符的下标,最后为单词末位字母下标
end = i;
//从第一个非空格字符开始计数,最后值为单词长度
count++;
}
//遍历到空格字符或最后一个单词的末位字母则反转单词
if(' '==myCharArr[i] || i==myCharArr.length-1) {
//单词首位字母下标
int j = end - count + 1;
//单词末位字母下标
int k = end;
//单词长度重置为 0
count = 0;
while(j < k) {
char temp = myCharArr[j];
myCharArr[j++] = myCharArr[k];
myCharArr[k--] = temp;
}
}
}
return String.valueOf(myCharArr);
}
}