每天的题目见github(看最新的日期): https://github.com/gzc426
每天一道leetcode-557反转字符串中的单词 III 分类:字符串
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例 1:
输入: "Let's take LeetCode contest" 输出: "s'teL ekat edoCteeL tsetnoc" 注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
思路
代码
class Solution {
public String reverseWords(String s) {
String [] list = s.split(" ");//按照空格分割字符串
//String result = "";//String 比StringBuffer 效率低!
StringBuffer result = new StringBuffer();//这里建议用StringBuffer,
for(int i=0;i<list.length - 1;i++)
{//对于分割后的每一个字符串进行反转,反转以后再加到里面
result.append(reverse(list[i]) + " ");
}
result.append(reverse(list[list.length - 1]));//最后一个末尾没有空格分开处理
return result.toString();
}
public String reverse(String s)
{//反转字符串
char [] charArray = s.toCharArray();//转字符数组
int i =0;int j = charArray.length - 1;
while(i < j)
{
char ch = charArray[i];
charArray[i] = charArray[j];
charArray[j] = ch;//交换前后两个字符
i++;
j--;//移动到下一对需要交换的字符上
}
return String.valueOf(charArray);//字符数组转字符串
}
}
代码截图(为了避免代码排版错乱)