LeetCode每日一题:反转字符串中的单词 III(No.557)

469 阅读1分钟

题目:反转字符串中的单词 III


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

示例:


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

思考:


首先根据空格将字符串分割,然后将每一个子串翻转,再把所有子串拼接,中间加上空格,最后一个空格需要去掉。

实现:


class Solution {
    public String reverseWords(String s) {
        String[] split = s.split(" ");
        String[] result = new String[split.length];
        for (int count = 0; count<split.length; count++) {
            result[count] = reverseString(split[count].toCharArray());
        }
        String resultStr = "";
        for (int count = 0; count < result.length; count++) {
            resultStr += result[count] + " ";
        }

        return resultStr.substring(0, resultStr.length() - 1);
    }

    public String reverseString(char[] s) {
        for (int i = 0; i < s.length / 2; i++) {
            s[i] = (char) (s[i] ^ s[s.length - 1 - i]);
            s[s.length - 1 - i] = (char) (s[i] ^ s[s.length - 1 - i]);
            s[i] = (char) (s[i] ^ s[s.length - 1 - i]);
        }
        return new String(s);
    }
}