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

Posted 程序员牧码

tags:

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

题目链接:点击打开链接

题目大意:略。

解题思路:略。

相关企业

  • 字节跳动

AC 代码

  • Java
// 解决方案(1)
class Solution 
    public String reverseLeftWords(String s, int n) 
        return s.substring(n) + s.substring(0, n);
    


// 解决方案(2)
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();
    


// 解决方案(3)
class Solution 
    public String reverseLeftWords(String s, int n) 
        StringBuilder res = new StringBuilder();
        for(int i = n; i < n + s.length(); i++)
            res.append(s.charAt(i % s.length()));
        return res.toString();
    
  • C++ 
// 解决方案(1)
class Solution 
public:
    string reverseLeftWords(string s, int n) 
        return s.substr(n, s.size()) + s.substr(0, n);
    
;

// 解决方案(2)
class Solution 
public:
    string reverseLeftWords(string s, int n) 
        reverseString(s, 0, n - 1);
        reverseString(s, n, s.size() - 1);
        reverseString(s, 0, s.size() - 1);
        return s;
    
private:
    void reverseString(string& s, int i, int j) 
        while(i < j) swap(s[i++], s[j--]);
    
;

// 解决方案(3)
class Solution 
public:
    string reverseLeftWords(string s, int n) 
        reverse(s.begin(), s.begin() + n);
        reverse(s.begin() + n, s.end());
        reverse(s.begin(), s.end());
        return s;
    
;

以上是关于LeetCode(剑指 Offer)- 58 - II. 左旋转字符串的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

[LeetCode]剑指 Offer 58 - I. 翻转单词顺序

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

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