给定一个字符串 s ,你需要反转字符串中每个单词的字符顺序,
同时仍保留空格和单词的初始顺序。
示例 1:
输入:s = "Let's take LeetCode contest"
输出:"s'teL ekat edoCteeL tsetnoc"
示例 2:
输入: s = "God Ding"
输出:"doG gniD"
思路
双指针法。
1. 首先两个指针都指在头部,一个指针j先遍历,
当遇到空格时,该指针指向空格前一位,然后i和j指针开始前后遍历互换。
2.首个单词遍历完后,i指针移到空格后一个位置,j指针从空格处继续往后走,
直到再次遇到空格。
3.当到最后一个单词时,j指针直接等于最后一个指针
所有条件有两条一条是遇到空格,一条是长度等于字符总长。
代码
class Solution {
public String reverseWords(String s) {
char[] arry = s.toCharArray();
int i=0,j=0;
int n=arry.length;
while(j<=n){
if (j==n||arry[j]==' '){
reverse(arry,i,j-1);
i=j+1;
}
j++;
}
return new String(arry);
}
public void reverse(char[] s,int left,int right){
while(left<right){
char t=s[left];
s[left]=s[right];
s[right]=t;
left++;
right--;
}
}
}
|