题目信息
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例:
输入:"Let's take LeetCode contest"
输出:"s'teL ekat edoCteeL tsetnoc"
提示:
在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
解题思路
- 暴力破解
- 无效操作分析
- 优化方法
- 考虑边界
- 编码实现
代码
class Solution {
public String reverseWords(String s) {
// 边界检查
if (s == null || s.trim().length() == 0) {
return "";
}
String[] words = s.split(" ");
// 字符串切分检查
if (words == null || words.length == 0) {
return "";
}
// 拼接结果
StringBuilder sb = new StringBuilder();
for (String word: words) {
// 单词翻转
sb.append(swap(word)).append(" ");
}
return sb.toString().trim();
}
/**
* 翻转字符串
*
* 不同于c,可直接操作字符串,Java字符串不可改变,因此转换为char数组翻转后重新创建
*/
private String swap(String word) {
if (word == null || word.trim().length() == 0) {
return "";
}
char[] chars = word.toCharArray();
for(int left = 0, right = chars.length - 1; left < right; left++, right--) {
char temp = chars[left];
chars[left] = chars[right];
chars[right] = temp;
}
return new String(chars);
}
}
题目来源:力扣(LeetCode)
题目链接:https://leetcode-cn.com/problems/reverse-words-in-a-string-iii
商业转载请联系官方授权,非商业转载请注明出处。
网友评论