Leetcode——左旋转字符串

Posted Yawn,

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode——左旋转字符串相关的知识,希望对你有一定的参考价值。

1. 题目

在这里插入图片描述

2. 题解

(1)较蠢解法

  • 转为字符数组后翻转,记录前后半段再替换
class Solution {
    public String reverseLeftWords(String s, int n) {
        int len = s.length();
        char[] str = s.toCharArray();
        int k = n % len;    //实际需要翻转位数

        // 1.记录翻转前半段
        char[] kstr = new char[k];
        for(int i = 0; i < k; i++){
            kstr[i] = str[i];
        }

        // 2.翻转后半段移至前半段
        for(int i = 0; i < len - k; i++){
            str[i] = str[i + k];
        }

        // 3.将1记录的翻转前半段 赋值 给后半段
        int m = len - k;
        for(int i = 0; i < k; i++){
            str[m] = kstr[i];
            m++;
        }

        //转为String 返回
        String news = String.valueOf(str);
        return news;
    }
}

(2)字符串切片

  • 使用substring函数直接切片处理
class Solution {
    public String reverseLeftWords(String s, int n) {
       return s.substring(n, s.length()) + s.substring(0, n);
    }
}

(3)使用StringBulider

class Solution {
    public String reverseLeftWords(String s, int n) {
        StringBuilder res = new StringBuilder();
        for(int i = n; i < s.length(); i++)
            res.append(s.charAt(i));
        for(int i = 0; i < n; i++)
            res.append(s.charAt(i));
        return res.toString();
    }
}

(4)直接使用String

class Solution {
    public String reverseLeftWords(String s, int n) {
        String res = "";
        for(int i = n; i < s.length(); i++)
            res += s.charAt(i);
        for(int i = 0; i < n; i++)
            res += s.charAt(i);
        return res;
    }
}

以上是关于Leetcode——左旋转字符串的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode(剑指 Offer)- 58 - II. 左旋转字符串

LeetCode(剑指 Offer)- 58 - II. 左旋转字符串

Leetcode剑指 Offer 58 - II. 左旋转字符串(简单模拟)

LeetCode-字符串左旋转字符串

[LeetCode]剑指 Offer 58 - II. 左旋转字符串

Leetcode——左旋转字符串