Java教程

Java 求解反转字符串 II

本文主要是介绍Java 求解反转字符串 II,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

文章目录

    • 一、题目
    • 二、题目解析
    • 三、总结

一、题目

给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。

  • 如果剩余字符少于 k 个,则将剩余字符全部反转。
  • 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。

二、题目解析

该题不难,关键就是

其实在遍历字符串的过程中,只要让 i += (2 * k),i 每次移动 2 * k 就可以了,然后判断是否需要有反转的区间

所以当需要固定规律一段一段去处理字符串的时候,要想想在在for循环的表达式上做做文章

class Solution {
    public String reverseStr(String s, int k) {
        char[] arr = s.toCharArray();
        int left, right, len = s.length();
        char temp;
        // 每2k个元素为一组进行反转
        for (int i = 0; i < len; i += 2 * k) {
            left = i;
            //判断下标是否越界,也就是剩余的元素是否还有k个
            right = i + k < len ? i + k - 1 : len - 1;
            while (left <= right) {
                temp = arr[left];
                arr[left] = arr[right];
                arr[right] = temp;
                left++;
                right--;
            }
        }
        return String.valueOf(arr);
    }
}

三、总结

所以当需要固定规律一段一段去处理字符串的时候,要想想在在for循环的表达式上做做文章

字符数组转字符串

String str = ch.toString();
这篇关于Java 求解反转字符串 II的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!