10 II. 左旋转字符串
发布日期:2021-05-10 01:35:00 浏览次数:19 分类:精选文章

本文共 1013 字,大约阅读时间需要 3 分钟。

为了实现字符串的左旋转操作,我们可以将字符串视为一个字符数组。左旋转操作意味着将前面的k个字符移动到字符串的末尾。具体步骤如下:

  • 检查n的值:如果n为0,直接返回原字符串。
  • 转换字符串为字符数组:为了方便操作,将字符串转换为字符数组。
  • 创建结果数组:长度与原字符串相同。
  • 复制字符数组
    • 从原字符串的第n个字符开始,到末尾,将这部分字符复制到结果数组的前面。
    • 将原字符串的前n个字符复制到结果数组的后面。
  • 返回结果字符串:将结果数组转换回字符串并返回。
  • 以下是实现代码:

    public class Solution {
    public String reverseLeftWords(String s, int n) {
    char[] chars = s.toCharArray();
    int len = chars.length;
    if (n <= 0) {
    return s;
    }
    char[] res = new char[len];
    System.arraycopy(chars, n, res, 0, len - n);
    System.arraycopy(chars, 0, res, len - n, n);
    return new String(res);
    }
    }

    代码解释

    • char[] chars = s.toCharArray(); 将字符串转换为字符数组。
    • int len = chars.length; 获取字符数组的长度。
    • if (n <= 0) return s; 处理n为0的情况,直接返回原字符串。
    • char[] res = new char[len]; 创建一个与原字符串长度相同的结果数组。
    • System.arraycopy(chars, n, res, 0, len - n); 将原字符串的第n个到末尾的字符复制到结果数组的前面。
    • System.arraycopy(chars, 0, res, len - n, n); 将原字符串的前n个字符复制到结果数组的后面。
    • return new String(res); 将结果数组转换回字符串并返回。

    这个方法高效且简洁,能够在O(n)时间复杂度内完成操作,适用于大字符串。

    上一篇:实习第五天 05.06
    下一篇:9 I. 翻转单词顺序

    发表评论

    最新留言

    路过,博主的博客真漂亮。。
    [***.116.15.85]2025年03月30日 17时03分59秒