力扣151--反转字符串中的单词(优)

清晰易懂,简单高效!

大体思路:

每次截取到想要的单词,拼接到新的sb中,过程中伴随双指针进行空格位置指向控制,

其中如果start指针如果==0的情况要放在第一个判断条件防止边界条件失效,并且这种情况下截取的是最后一个单词,此时不需要加额外空格。

java 复制代码
class Solution {
    public String reverseWords(String s) {
        s = s.trim();
        StringBuilder sb = new StringBuilder();
        int end = s.length() - 1;
        int start = end;
        while(start >= 0){
                  //这里分四种情况来决定每次截取新的字符串位置
            if(start == 0) {
                sb.append(s.substring(start, end + 1));
                start--;
            } else if(s.charAt(start) !=' ') {
                start--;
            } else if(s.charAt(start) == ' '){
                sb.append(s.substring(start + 1, end + 1) + " ");
                while(start >=0 && s.charAt(start) == ' ')
                    start--;
                end = start;
            }  else
                start--;
        }
        return sb.toString();
    }
}
相关推荐
纪元A梦21 小时前
贪心算法应用:数字孪生同步问题详解
java·算法·贪心算法
纪元A梦21 小时前
贪心算法应用:食品生产线排序问题详解
算法·贪心算法
信奥卷王21 小时前
2024年9月GESPC++三级真题解析(含视频)
算法
望未来无悔1 天前
系统学习算法 专题十八 队列+宽搜
java·算法
xz2024102****1 天前
最大似然估计:损失函数的底层数学原理
人工智能·算法·机器学习·概率论
Xの哲學1 天前
Linux RCU (Read-Copy-Update) 机制深度分析
linux·网络·算法·架构·边缘计算
数模加油站1 天前
25高教社杯数模国赛【C题国一学长思路+问题分析】第二弹
算法·数学建模·数模国赛·高教社杯全国大学生数学建模竞赛
小跌—1 天前
Linux:进程信号理解
linux·c++·算法
l12345sy1 天前
Day22_【机器学习—集成学习(2)—Bagging—随机森林算法】
算法·机器学习·集成学习·bagging·随机森林算法
snowfoootball1 天前
近期算法学习记录
学习·算法