当前位置:网站首页>151. Reverse words in string - double pointer method
151. Reverse words in string - double pointer method
2022-08-05 19:25:00 【Help me get up and keep learning】

class Solution {
public String reverseWords(String s) {
//1.Remove the middle of the fore and aft, and extra Spaces
StringBuilder sb = removeSpace(s);
//2.反转整个字符串
reverseString(sb,0,sb.length()-1);
//sb.reverse();
//3.Hair turn each word
reverseEachWord(sb);
return sb.toString();
}
private void reverseEachWord(StringBuilder sb){
int start = 0;
int end = 1;
int n = sb.length();
while(start<n){
while(end<n && sb.charAt(end)!=' '){
end++;
}
reverseString(sb,start,end-1);
start=end+1;
end=start+1;
}
}
private void reverseString(StringBuilder sb,int start,int end){
//可以使用reverse() 函数进行反转
while(start<end){
char c = sb.charAt(start);
sb.setCharAt(start,sb.charAt(end)); //sb.setCharAt(int pos,char c) 位置 字符
sb.setCharAt(end,c);
//Or exchange method;reverse() 函数进行反转
start++;
end--;
}
}
private StringBuilder removeSpace(String s){
int start=0;
int end = s.length()-1;
while(s.charAt(start) ==' ') start++;
while(s.charAt(end) ==' ') end--;
StringBuilder sb = new StringBuilder();
while(start<=end){
char c = s.charAt(start);
if(c!=' ' || sb.charAt(sb.length()-1)!=' '){
sb.append(c);
}
start++;
}
return sb;
}
}
边栏推荐
猜你喜欢
随机推荐
数据泄露溯源
为什么企业需要使用 Wiki 工具?
JSP基本应用
【Connection reset原因分析和解决方案】
面试官:一台服务器能建立的TCP链接真的只有65535个吗?
RHCE 作业七(ansible基础配置详解)
【StoneDB模块介绍】服务器模块
tiup cluster audit
Biotin-HPDP(129179-83-5),一个巯基反应性的生物素化试剂
Umi4 集成阿里低代码框架lowcode-engine
分享几个YYDS的Pycharm插件
数据库 GUI 工具 CH Visualize 新 UI 布局抢先看
RHCE 作业八(Ansible的三个命令模块和部分文件操模块)
SQL注入 基础学习
卸载Node
Paginator 简单分页
sast/dast/iast对比介绍
LeetCode_394_string decoding
js计算数组中每个元素出现的次数
151. 颠倒字符串中的单词-双指针法








