[Java][Leetcode middle] 151. 反转字符串中的单词

思路挺简单的

自己想的,步骤挺复杂的

  • 先统计处开头和结尾的空格数
  • 跳过开头这些空格,将单词放到数组中
  • 统计最后一个可能漏过的单词(例如:"hello word",没有空格退出)
  • 倒序输出
java 复制代码
public String reverseWords(String s) {
        int n = s.length();

        int startCnt = 0;
        int endCnt = n-1;
        while(startCnt < n){
            if(s.charAt(startCnt) == ' '){
                startCnt++;
            } else {
                break;
            }

        }
        while(endCnt >= 0){
            if( s.charAt(endCnt) == ' '){
                endCnt--;
            } else{
                break;
            }
        }
        String[] words = new String[n];
        int cnt = -1;
        int inWord=0;
        int startIndex = 0;
        for(int i = startCnt; i <= endCnt ; i++){
            if(s.charAt(i) == ' '){
                if(inWord == 1){
                    words[++cnt] = s.substring(startIndex, i);
                }
                inWord = 0;
            }else{
                if(inWord == 0){
                    startIndex = i;
                }
                inWord = 1;
            }
        }
        // 处理最后一个未处理的单词
        if(inWord == 1){
            words[++cnt] = s.substring(startIndex, endCnt+1);
        }
        StringBuilder sb = new StringBuilder();
        for(int i = cnt ; i>=0 ; i--){
            sb.append(words[i]);
            if(i != 0){
                sb.append(" ");
            }
        }

        return sb.toString();
    }

用API

java 复制代码
public String reverseWords2(String s) {
        s = s.trim();
        String[] split = s.split("\\s+");
        List<String> wList = Arrays.asList(split);
        Collections.reverse(wList);
        return String.join(" ", wList);
    }
相关推荐
2401_8955213433 分钟前
【Spring Security系列】Spring Security 过滤器详解与基于JDBC的认证实现
java·后端·spring
皮卡蛋炒饭.1 小时前
线程的概念和控制
java·开发语言·jvm
一只大袋鼠1 小时前
MyBatis 入门详细实战教程(一):从环境搭建到查询运行
java·开发语言·数据库·mysql·mybatis
程序员老邢1 小时前
【人生底稿・番外篇 05】我的电影江湖:从录像带时代,到港片陪伴的青春岁月
java·程序人生·职场发展·娱乐
sonnet-10291 小时前
函数式接口和方法引用
java·开发语言·笔记
Bat U1 小时前
JavaEE|多线程(二)
java·开发语言
_Evan_Yao1 小时前
RAG中的“Chunk”艺术:我试过10种切分策略后总结的结论
java·人工智能·后端·python·软件工程
魂梦翩跹如雨2 小时前
数据库的“契约” —— 约束(Constrains)
java·数据库·mysql
独自破碎E3 小时前
面试官:你有用过Java的流式吗?比如说一个列表.stream这种,然后以流式去处理数据。
java·开发语言
2601_949818093 小时前
头歌答案--爬虫实战
java·前端·爬虫