美文网首页
offer058 II. 左旋转字符串

offer058 II. 左旋转字符串

作者: D_w | 来源:发表于2022-03-16 17:14 被阅读0次

    字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    解法:1允许切片的话可以直接切片拼接
    2.如果不允许切片则新建一个 list(Python)、StringBuilder(Java) ,记为 resres ;
    先向 resres 添加 “第 n + 1n+1 位至末位的字符” ;
    再向 resres 添加 “首位至第 nn 位的字符” ;
    将 resres 转化为字符串并返回。
    python
    解法一

    class Solution:
        def reverseLeftWords(self, s: str, n: int) -> str:
            return s[n:]+s[:n]
    

    解法二

    class Solution:
        def reverseLeftWords(self, s: str, n: int) -> str:
            res = []
            for i in range(n,len(s)):
                res.append(s[i])
            for i in range(n):
                res.append(s[i])
            return "".join(res)
    

    java
    解法一

    public class Offer58 {
        public String reverseLeftWords(String s, int n) {
            return s.substring(n,s.length()) + s.substring(0,n);
        }
    }
    

    解法二

    public class Offer58 {
        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();
        }
    }
    

    相关文章

      网友评论

          本文标题:offer058 II. 左旋转字符串

          本文链接:https://www.haomeiwen.com/subject/ygvpdrtx.html