leecode151 反转字符串中的单词(附有手写思路)
丑陋的思路
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 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步