赞
踩
清晰易懂,简单高效!
大体思路:
每次截取到想要的单词,拼接到新的sb中,过程中伴随双指针进行空格位置指向控制,
其中如果start指针如果==0的情况要放在第一个判断条件防止边界条件失效,并且这种情况下截取的是最后一个单词,此时不需要加额外空格。
- class Solution {
- public String reverseWords(String s) {
- s = s.trim();
- StringBuilder sb = new StringBuilder();
- int end = s.length() - 1;
- int start = end;
- while(start >= 0){
- //这里分四种情况来决定每次截取新的字符串位置
- if(start == 0) {
- sb.append(s.substring(start, end + 1));
- start--;
- } else if(s.charAt(start) !=' ') {
- start--;
- } else if(s.charAt(start) == ' '){
- sb.append(s.substring(start + 1, end + 1) + " ");
- while(start >=0 && s.charAt(start) == ' ')
- start--;
- end = start;
- } else
- start--;
- }
- return sb.toString();
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。