[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);
    }
相关推荐
2301_32241428042 小时前
基于SpringBoot+Vue的休闲零食超市管理系统的设计与实现59004-计算机毕设 原创(免费领源码+部署教程+开发环境)
java·vue.js·spring boot·redis·mysql·决策树·推荐算法
金銀銅鐵4 小时前
[Java] 用 GUI 展示 EnumSet 增减元素时的内部变化(上)
java·后端·ai编程
福建佰胜张工4 小时前
SMC 薄型气爪 MHF2-16D1 深度解析:平行开闭、低剖面结构在自动化装配中的选型与落地
java·服务器·安全·自动化
catoop4 小时前
API Key 设计与安全生成方案:结构拆解、数据库设计与 Java 实现
java·数据库·安全
system_error_x5 小时前
SpringBoot 集成 Thymeleaf 简洁入门
java·spring boot·后端
驭渊的小故事5 小时前
Spring AI Alibaba 实战:从maven依赖治理到声明式工具调用
java·人工智能·spring
Elastic 中国社区官方博客6 小时前
我们如何通过 70 多个拉取请求,将 OpenTelemetry Java agent 迁移到 invokedynamic
java·大数据·开发语言·elasticsearch·搜索引擎·全文检索·es
tyn1886 小时前
记录本地安装nacos服务的方法及异常
java·开发语言
步行cgn6 小时前
Spring MVC 视图机制的核心接口与类
java·开发语言·后端·spring·mvc
y1su7 小时前
Leetcode 字符串模板
java·数据结构·算法·leetcode·职场和发展·动态规划