剑指 Offer 58 - I. 翻转单词顺序
//双指针 class Solution { public String reverseWords(String s) { //处理字符串 首尾空格 String str = s.trim(); //双指针 int right = str.length() - 1; //left 指向 最右, 从右向左扫描 int left = right; //结果集 StringBuilder res = new StringBuilder(); while(left >= 0){ //找第一个空格 while(left >= 0 && str.charAt(left) != ' '){ left--; } //找到后,说明现在 双指针的区间内 为一个单词 加入结果集,加一个空格分隔 res.append(s.substring(left + 1,right + 1) + ' '); //跳过单词之间的空格 while(left >= 0 && s.charAt(left) == ' '){ left--; } //将当前的left 指针 赋值给 right,找下一个单词 right = left; } return res.toString().trim(); } }
class Solution { public String reverseWords(String s) { //去除首尾空格,并用空格拆分单词 String[] str = s.trim().split(" "); //返回集 StringBuilder res = new StringBuilder(); for(int i = str.length - 1; i >= 0;i--){ if(str[i].equals(" ") || str[i].equals("")){ continue; } res.append(str[i]); res.append(" "); } return res.toString().trim(); } }