美文网首页
左旋转字符串

左旋转字符串

作者: su945 | 来源:发表于2020-05-21 22:09 被阅读0次

    题目描述

    汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!

    问题分析

    我们根据n将字符串分为两部分,这两部分先自己反转,然后再一同反转

    解题思路1

    class Solution {
    public:
        string LeftRotateString(string str, int n) {
            int len = str.length();
            string str_left;
            if (len < 1)
            {
                return str_left;
            }
            //
            n = n%len;
            str += str;
            str = str.substr(n, len);
            return str;     
        }
    };
    

    解题思路2

    class Solution {
    public:
        string LeftRotateString(string str, int n) {
            string rotateStr ;
            if(str.empty())
            {
                return rotateStr;
            }
            rotateStr = str;
            int len = str.size();
            int leftR = n % len;
    
            for(int i = 0; i < len-leftR; ++i)
            {
                rotateStr[i] = str[i+leftR];
            }
            for(int i = len-leftR; i < len; ++i)
            {
                rotateStr[i] = str[i-len+leftR];
            }
            return rotateStr;
    
        }
    };
    

    相关文章

      网友评论

          本文标题:左旋转字符串

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