为了能到远方,脚下的每一步都不能少.|

TranquilGlow

园龄:2年7个月粉丝:1关注:0

2023-07-17 12:54阅读: 6评论: 0推荐: 0

leecode151 反转字符串中的单词(附有手写思路)

丑陋的思路

c294dd873c1716a942f21df8f9b108d8_720.png

StringJoiner版本

前言

刚开始我是用StringJoiner写的,因为我看到这个每个元素之间有一个固定的空格我就想着能够直接用这个StringJoiner来进行书写,但是我提交的时候说这个StringJoiner无法识别,因为这个StringJoiner是java8之后才有的东西,于是我就决定用这个StringBuilder去做,但是后来我一想,不对啊,leecode不可能不支持java8啊,于是我才想到原来刷leecode题也是要导包的,不是单纯的写个函数就行了,

代码

leecode如果想要使用这个StringJoiner我们可以去导包

import java.util.StringJoiner;
class Solution {
    public String reverseWords(String s) {
        StringJoiner sj = new StringJoiner(" ");
        int length = s.length();
        int start=length-1,end=length-1;
        while(start>-1){
            //这样并没有排除最后一位是空格的情况
            while(end>-1&&s.charAt(end)==' '){
                end--;
                start=end;
            }
            if(end==-1){
                break;
            }
            while(start>-1&&s.charAt(start)!=' '){
                start--;
            }
            start++;
            sj.add(s.substring(start, end+1));
            end=start-1;  //让end更改位置,这样能够同时修改start的位置
        }
        return sj.toString();
    }
}

StringBuilder版本

package heima_study.day3;

import java.util.Scanner;
//import java.util.StringJoiner;

public class 反转字符串的单词151 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入这个字符串");
        String s = input.nextLine();
        String result = reverseWords(s);
        System.out.println(result);
        input.close();
    }
    public static String reverseWords(String s) {
        StringBuilder sj = new StringBuilder();
        int length = s.length();
        int start=length-1,end=length-1;
        while(start>-1){
            //这样并没有排除最后一位是空格的情况
            while(end>-1&&s.charAt(end)==' '){
                end--;
                start=end;
            }
            if(end==-1){
                break;
            }
            while(start>-1&&s.charAt(start)!=' '){
                start--;
            }
            start++;
            sj.append(s.substring(start, end+1)).append(" ");
            end=start-1;  //让end更改位置,这样能够同时修改start的位置
        }
        if(sj.length()>0){
            sj.setLength(sj.length()-1);
        }
        return sj.toString();
    
    }
}

本文作者:TranquilGlow

本文链接:https://www.cnblogs.com/xuehaiqiule/p/17621630.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   TranquilGlow  阅读(6)  评论(0编辑  收藏  举报  
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起