Leetcode
题目要求
给定一个字符串,逐个翻转字符串中的每个单词。
- 示例:
- 输入:“the sky is blue”
- 输出:“blue is sky the”
- 说明:无空格字符构成一个单词
输入字符串可以在前面或后面包含多余的空格,但是翻转后的字符不能包括。
如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
核心思想
将字符串拆分,然后从后往前遍历。
这里有一个坑,就是如果字符串是" 1"的情况,会拆分成["" , 1],即一个空字符串和1个字符,这时,必须删去空字符串,进行遍历。
完整代码如下
/**
* 给定一个字符串,逐个翻转字符串中的每个单词。
* 示例:
* 输入:“the sky is blue”
* 输出:“blue is sky the”
* 说明:无空格字符构成一个单词
* 输入字符串可以在前面或后面包含多余的空格,但是翻转后的字符不能包括。
* 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
* @author mac
*
*/
public class Solution {
public String reverseWords(String s) {
if(s == null || s.length() == 0) {
return "";
}
String newStr = "";
String[] strArray = s.split(" ");
for(int i = strArray.length - 1; i >= 0; i--) {
if(strArray[i].length() != 0){
if(!strArray[i].equals(" ")) {
if(newStr.length() > 0) {
newStr += " ";
}
newStr += strArray[i];
}
}
}
return newStr;
}
public static void main(String[] args) {
Solution sl = new Solution();
String str = " 1";
String str2 = "the sky is blue";
System.out.println(sl.reverseWords(str));
System.out.println(sl.reverseWords(str2));
}
}