给定一个字符串,逐个翻转字符串中的每个单词。
传入一个字符串 " Hello World! "
,返回 "World! Hello"
目标字符串
为 null
或者长度为 0
,则直接返回空字符串;目标字符串
的第一个空格的位置subString()
将第一个空格之前的子字符串压入栈中目标字符串
的长度变为0" "
注意当目标字符串没有空格时,取第一个空格的位置会返回
-1
,此时用这个位置去取字符串会出现下标越界!
public class Solution {
/**
* @param s : A string
* @return : A string
*/
public String reverseWords(String s) {
if (s == null || s.length() == 0) {
return "";
}
Stack<String> stack = new Stack<String>();
while (s.length() != 0) {
s = s.trim();
int i = s.indexOf(" ");
if ( i== -1) {
stack.push(s);
break;
}
stack.push( s.substring(0, i) );
s = s.substring(i, s.length());
}
String str = "";
while (!stack.isEmpty()) {
if(stack.size()==1)
str = str + stack.pop();
else
str = str + stack.pop() + " ";
}
return str;
}
}