题目:翻转字符串里的单词
题目描述:给定一个字符串,逐个翻转字符串中的每个单词。
示例 1:
输入: “the sky is blue”
输出: “blue is sky the”
示例 2:
输入: " hello world! "
输出: “world! hello”
解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
示例 3:
输入: “a good example”
输出: “example good a”
解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
说明:
无空格字符构成一个单词。
输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
public class ReverseWords {
public static void main(String[] args) {
String s = “hello world!”;
System.out.println(reverseWords1(s));
}
public static String reverseWords1(String s){
int start = 0;
int end = s.length()-1;
StringBuilder sb = new StringBuilder();
while (end >= 0){
while (end >=0 && s.charAt(end) == ' '){
end--;
}
if(end<0){
break;
}
start = end -1;
while (start>0 && s.charAt(start)!=' ');
{
start--;
}
sb.append(s.substring(start+1,end+1)+" ");
end = start-1;
}
return sb.toString().trim();
}
public static String reverseWords(String s){
//删除空格,分割字符串
String[] str = s.trim().split(" ");
StringBuilder stb = new StringBuilder();
for (int i = str.length -1; i >= 0 ; i--) { //从后面倒序单词列表
if(str[i].equals("")) //遇到连续的空格则跳过
continue;
stb.append(str[i]+" "); //将单词拼接到StringBuilder
}
return stb.toString().trim(); //转化为字符串,删除尾部空格,并返回。
}
}
/**
- 思路:1.split分割字符串,然后使用stringBuilder倒序拼接。
- 2.注意:在使用split(" “)分割字符串,三个连续的空格会被分割成三个”",而且""也是字符串比较,要用equals方法。
*/