《LeetCode力扣练习》代码随想录——双指针法(翻转字符串里的单词—Java)
刷题思路来源于
代码随想录
151. 反转字符串中的单词
-
双指针
class Solution {
public String reverseWords(String s) {
char[] chs=removeSpace(s.toCharArray());
reverse(chs,0,chs.length-1);
int left=0;
for(int right=0;right<chs.length;right++){
if(chs[right]==' '){
reverse(chs,left,right-1);
left=right+1;
}
}
reverse(chs,left,chs.length-1);
return new String(chs);
}
private char[] removeSpace(char[] chs){
int slow=0;
for(int fast=0;fast<chs.length;fast++){
if(chs[fast]!=' '){
if(slow!=0){
chs[slow++]=' ';
}
while(fast<chs.length&&chs[fast]!=' '){
chs[slow++]=chs[fast++];
}
}
}
return Arrays.copyOfRange(chs,0,slow);
}
private void reverse(char[] chs,int left,int right){
while(left<right){
chs[left]^=chs[right];
chs[right]^=chs[left];
chs[left]^=chs[right];
left++;
right--;
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)