力扣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();
    }
}
相关推荐
wadesir7 小时前
Rust中的条件变量详解(使用Condvar的wait方法实现线程同步)
开发语言·算法·rust
yugi9878387 小时前
基于MATLAB实现协同过滤电影推荐系统
算法·matlab
TimberWill7 小时前
哈希-02-最长连续序列
算法·leetcode·排序算法
Morwit7 小时前
【力扣hot100】64. 最小路径和
c++·算法·leetcode
leoufung7 小时前
LeetCode 373. Find K Pairs with Smallest Sums:从暴力到堆优化的完整思路与踩坑
java·算法·leetcode
wifi chicken8 小时前
数组遍历求值,行遍历和列遍历谁更快
c语言·数据结构·算法
胡楚昊8 小时前
NSSCTF动调题包通关
开发语言·javascript·算法
Gold_Dino9 小时前
agc011_e 题解
算法
bubiyoushang8889 小时前
基于蚁群算法的直流电机PID参数整定 MATLAB 实现
数据结构·算法·matlab
风筝在晴天搁浅9 小时前
hot100 240.搜索二维矩阵Ⅱ
算法·矩阵