您的位置:首页 > 其它

LeetCode Reverse Words in a String

2015-09-21 04:42 316 查看
原题链接在这里:https://leetcode.com/problems/reverse-words-in-a-string/

题目:

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

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

题解:

把原有string s按照空格分开存入strArr中,再从strArr尾部开始一个一个加到StringBuikder中即可。

Note:  1.这里学习了几个新的API, string.split(" ")可以按照空格把原有string分开但若是有连续空格比如"a a"中间有两个空格,就会拆成[a, , a], 中间的空格会保留。但若是用string.splict("\\s+")也是按照空格分开,但是上面连续两个空格时就不会额外拆出一个空格。

2. 若是string开头有空格,如" a", string.splict("\\s+")拆出的array长度为2, 也会包含空的string, strArr 会像["","a"]. 所以要像Simplify Path在加到StringBuikder前判定strArr[i].length()是否为0.

3.最后会多加一个 空格 在sb中,所以最后要用sb.deleteCharAt(sb.length()-1)消掉最后一个空格。

Time Complexity: O(n). Space: O(n), n = strArr.length.

AC Java:

public class Solution {
public String reverseWords(String s) {
if(s == null || s.length() == 0){
return s;
}
String [] strArr = s.split("\\s+");
if(strArr.length == 0){
return "";
}
StringBuilder sb = new StringBuilder();
for(int i = strArr.length-1; i>=0; i--){
if(strArr[i].length() == 0){
continue;
}
sb.append(strArr[i] + " ");
}
sb.deleteCharAt(sb.length()-1);
return sb.toString();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: