算法第七天|字符串篇

344. 反转字符串

 public void reverseString(char[] s) {
        for (int i = 0; i < s.length / 2; i++) {
            char temp = s[i];
            int index = s.length -1 -i;
            s[i] = s[index];
            s[index] = temp;
        }
    }

较为简单,双指针解答

541. 反转字符串 II

 public String reverseStr(String s, int k) {
        char[] strs = s.toCharArray();
        int left = 0;
        int right = 0;

        while (s.length() - right >= k) { // 看着不太对,长度减下标?画图之后,代入数字就合理了。
            int index = right + k - 1;
            if (s.length() - right < 2 * k) {
                // 说明需要反转前面的内容,后面的不变
                reverse(strs, left, index);
                return new String(strs);
            }
            reverse(strs, left, index);
            left = right = right + 2 * k;
        }
        reverse(strs, left, strs.length - 1); // 别忘了反转后续的字符
        return new String(strs);
    }

    private void reverse(char[] str, int left, int right) {
        // 反转从left到right的所有元素
        while (left < right) {
            char temp = str[left];
            str[left] = str[right];
            str[right] = temp;
            left++;
            right--;
        }
    }

要注意的细节内容太多了,调试了半天才写好。记得一定要画图

151. 反转字符串中的单词

 public static String reverseWords(String s) {
        String newStr = s.trim();
        String[] s1 = newStr.split(" ");
        StringBuilder stringBuilder = new StringBuilder(s1.length * 2 - 1);
        Stack<String> stack = new Stack<>();
        for (int i = 0; i < s1.length; i++) {
            if (s1[i].isEmpty()) {
                continue;
            }
            stack.add(s1[i]);
        }
        while (true) {
            stringBuilder.append(stack.pop()); // 字符串大于等于1
            if (stack.isEmpty()) {
                break;
            }
            stringBuilder.append(" ");
        }
        return new String(stringBuilder);
    }

使用了java自带的前后空格去除,和按元素分割函数。也可以自己写,函数不算复杂。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容