反转字符串中的单词

题目信息

给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。

示例:

输入:"Let's take LeetCode contest"
输出:"s'teL ekat edoCteeL tsetnoc"

提示:
在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。

解题思路

  1. 暴力破解
  2. 无效操作分析
  3. 优化方法
  4. 考虑边界
  5. 编码实现

代码

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

商业转载请联系官方授权,非商业转载请注明出处。

你可能感兴趣的:(反转字符串中的单词)