当前位置:网站首页>151. 颠倒字符串中的单词-双指针法
151. 颠倒字符串中的单词-双指针法
2022-08-05 19:20:00 【扶我起来继续学习】

class Solution {
public String reverseWords(String s) {
//1.去除首尾以及中间的多余空格
StringBuilder sb = removeSpace(s);
//2.反转整个字符串
reverseString(sb,0,sb.length()-1);
//sb.reverse();
//3.发转每个单词
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);
//或者交换方法;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 工具?
02 控制器《ThinkPHP6 入门到电商实战》
数据泄露溯源
【图文并茂】一键重装Win11系统方法详解
05 tp6 的数据添加 助手函数、 save、insert、strict、replace、insertGetId、insertAll《ThinkPHP6 入门到电商实战》
如何更换war和jar包中的文件
怎样设计产品的兼容性测试更好?
不要小看一个Redis~ 从头到尾全是精华,阿里Redis速成笔记太香了
RHCE 作业四
给echart.js折线图设置滚动条
windbg查看模块中的方法时报错no code found
The seven key steps to optimize customer service
Mysql insert and update processing field is the key database
一建证书有什么用?拿到一级建造师证书能干什么?
uniapp中用canvas实现小球碰撞的小动画
张高兴的 .NET IoT 入门指南:(八)基于 GPS 的 NTP 时间同步服务器
Qt 中重载信号槽的连接
智慧物流:ZETag云标签如何做到快递包裹防拆防盗?
面试结束前被问「你有哪些要问我的?」该怎么办?这样回答你就凉了
mysql operations, constraints, indexes









