题目:
给你一个字符串 s ,请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。
示例:
输入:s = " hello world " 输出:"world hello" 解释:反转后的字符串中不能存在前导空格和尾随空格。
思路:
1.直接思路
class Solution { public String reverseWords(String s) { char[] ch=s.toCharArray();//原 if(s==null||s.length() == 0){ return s; } StringBuilder sb=new StringBuilder();//新 int i = ch.length-1; while(i>=0){ while(i>=0&&ch[i]==' '){//跳过空格 i--; } int right=i;//记录单词结束位置 while(i>=0&&ch[i]!=' '){ i--;//找到单词起始位置 } for(int j=i+1;j<=right;j++){//j从单词起始位置到结束位置 sb.append(ch[j]); if(j == right){ sb.append(" ");//空格 } } } //删除最后的空格 sb.deleteCharAt(sb.length()-1); return sb.toString(); } }
tips:
s == null; 表示s还没有占用存储空间。 s.length() == 0; 表示s占用存储空间,但是其中还没有元素。
标签:151,单词,ch,int,力扣,while,字符串,空格 From: https://www.cnblogs.com/cjhtxdy/p/16982633.html