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
".
Clarification:
- What constitutes a word?
A sequence of non-space characters constitutes a word. - Could the input string contain leading or trailing spaces?
Yes. However, your reversed string should not contain leading or trailing spaces. - How about multiple spaces between two words?
Reduce them to a single space in the reversed string.
public class Solution {
public String reverseWords(String s) {
// 判断 ""
if(s.length()==0) return "";
// 判断" "
if(s.length()==1 && s.charAt(0)==' ')return "";
int num = 0;
boolean flag = false;
// 得到字符串中单词的个数
for(int i=0; i < s.length(); i++){
if(s.charAt(i)!=' '){
flag = true;
}else{
if(flag){
num++;
flag = false;
}
}
}
String str[] = new String[num+1];
int len=0;
// 分离出单词
String tempStr = "";
flag = false;
for(int i=0; i < s.length(); i++){
if(s.charAt(i)!=' '){
tempStr += s.charAt(i);
flag = true;
}else{
if(flag){
flag = false;
str[len++] = tempStr;
tempStr = "";
}
}
}
str[len] = tempStr;
// 对单词进行组合,在单词之间加上空格
String resu = "";
for(int i=str.length-1; i>=0; i--){
resu+=str[i];
if(i!=0)
resu += " ";
}
// 判断结果为""的情况
if(resu.length()==0) return "";
// 去除前导零和后置零
int count=0;
while(resu.charAt(count)==' '){
resu = resu.substring(count+1);
}
count = resu.length()-1;
while(resu.charAt(count)== ' '){
resu = resu.substring(0, count);
count--;
}
return resu;
}
}