Reverse Words in a String

本文介绍了一种将输入字符串中的单词进行逆序排列的方法。通过使用字符串数组和StringBuilder,提供了两种实现方式:一种利用split方法分割字符串并逆序组装;另一种通过从字符串末尾开始扫描并逆序记录单词。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Given an input string, reverse the string word by word.

For example,
Given s = "the sky is blue",
return "blue is sky the".

给定一个字符串,将里面包含的单词倒叙排列。我们可以将字符串通过空格分割成一个字符串数组,然后从后面开始组成一个新的字符串。这里要注意的是分割字符串我们用到了String的split()方法,split的参数类型是个正则表达式,不是简单的字符串,我们要用转义字符来写,例如用空格来分的话最好写成“\\s” 或者“\\s+”,代表通过一个空格或多个空格来分割。通过返回一个字符串数组的代码如下:

public class Solution {
public String reverseWords(String s) {
String[] result = s.trim().split("\\s+");
StringBuilder sb = new StringBuilder();
for(int i = result.length - 1; i >= 0; i--) {
sb.append(result[i] + " ");
}
return sb.toString().trim();
}
}


另外一种方法我们还可以从字符串末尾开始扫描,如果遇到空字符就跳过,知道遇到不为空的字符,标记当前字符的位置,然后继续扫描,直到遇到下一个为空的字符,用substring方法将这一段子串记录到新的字符串中,这样知道扫描完整个字符串。代码如下:

public class Solution {
public String reverseWords(String s) {
if(s == null || s.length() == 0) return s;
StringBuilder sb = new StringBuilder();
for(int i = s.length() - 1; i >= 0 ; i--) {
if(s.charAt(i) == ' ') continue;
int end = i;
while(i >= 0 && s.charAt(i) != ' ') i --;
sb.append(s.substring(i + 1, end + 1)).append(" ");
}
return sb.toString().trim();
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值