单词倒序输出——Java
方法一:双指针
算法解析:
- 倒序遍历字符串 s,记录单词左右索引边界 i , jj;
- 每确定一个单词的边界,则将其添加至单词列表 res;
- 最终,将单词列表拼接为字符串,并返回即可。
class Solution {
public String reverseWords(String s) {
s=s.trim();//用于删除字符串的头尾空白符
int j=s.length()-1,i=j;
StringBuilder res=new StringBuilder();
while(i>=0){
while(i>=0&&s.charAt(i)!=' ') i--;
res.append(s.substring(i+1,j+1)+" ");
while(i>=0&&s.charAt(i)==' ') i--;
j=i;
}
return res.toString().trim();
}
}
方法二:分割+倒序(面试不推荐)
public class Test {
public static void main(String[] args) {
String src = "Hello Java Hello China";//需要处理的字符串
String[] arr = src.split(" ");//按空格分割
int length = arr.length;//计算数组长度
StringBuilder sb = new StringBuilder(src.length());//新建一个StringBuilder对象
for (int i=length-1;i>=1;i--){
sb.append(arr[i]+" ");//将字符串依次加入StringBuilder中
}
sb.append(arr[0]);//最后一个单词不加空格
System.out.println(sb.toString());//输出
}
}