昨天的题解
每天一道leetcode151-反转字符串里的单词 分类:字符串
给定一个字符串,逐个翻转字符串中的每个单词。
示例:
输入: "the sky is blue", 输出: "blue is sky the". 说明:
无空格字符构成一个单词。 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
思路
代码(安卓机代码可以移动,苹果机不行,最近我在寻找一个新的代码排版,PC端打开没有问题)
先放个图片,代码排版有问题的看图片
test.png
public class Solution {
public String reverseWords(String s) {
if(s.equals(""))
return s;
if(s.equals(" "))
return "";
s = deleteSpace(s);
s = reverse(s);
String [] list = s.split(" ");
String result = "";
for(int i=0;i<list.length-1;i++)
{
result += reverse(list[i]) + " ";
}
result += reverse(list[list.length - 1]);
return result;
}
public String reverse(String s)
{
char [] charArray = s.toCharArray();
int i=0;int j=charArray.length - 1;
while(i < j)
{
char temp = charArray[i];
charArray[i] = charArray[j];
charArray[j] = temp;
i++;
j--;
}
return String.valueOf(charArray);
}
public String deleteSpace(String s1) {
char [] charArray = s1.toCharArray();
int begin = 0;int end = s1.length() - 1;
while(begin < charArray.length && charArray[begin] == ' ')
begin++;
while(end >= 0 && charArray[end] == ' ')
end--;
String temp = "";
while (begin <= end)
{
if(charArray[begin] != ' ')
{
temp += charArray[begin];
begin++;
}else {
temp += ' ';
while (charArray[begin] == ' ')
{
begin++;
}
}
}
return temp;
}
}
代码讲解
结果
结果.png 超时了尴尬
AC代码
public class Solution {
public String reverseWords(String s) {
if (s == null || s.length() == 0) {
return "";
}
String[] array = s.split(" ");
String str = "";
for (int i = array.length - 1; i >= 0; --i) {
if (!array[i].equals("")) {
if (str.length() > 0) {
str += " ";
}
str += array[i];
}
}
return str;
}
}
代码讲解