剑指Offer 58-||.左旋转字符串

题目描述

 

 

解法一

基本思路:直接移动

class Solution {
public:
    string reverseLeftWords(string s, int n) {
        for(int i = 0; i < n; i++){
            int j = 0;
            int temp = s[0];
            for(; j < s.size() - 1; j++){
                s[j] = s[j+1];
            }
            s[j] = temp;
        }
        return s;
    }
};

 

 

解法二

基本思路:两段拼接 

class Solution{
public:
    string reverseLeftWords(string s, int n) {
        string temp = "";
        for(int i = n; i < s.size(); i++){
            temp += s[i];
        }
        for(int i = 0; i < n; i++){
            temp += s[i];
        }
        return temp;
    }
};

 

解法三

基本思想:两段拼接,使用substr(start, len);

  主要功能是复制子字符串,要求从指定位置开始,并具有指定的长度。

  返回值: string,包含s中从start开始的len个字符的拷贝(pos的默认值是0,len的默认值是s.size() - pos,即不加参数会默认拷贝整个s)

  注意:若start的值超过了string的大小,则substr函数会抛出一个out_of_range异常;若start+len的值超过了string的大小,则substr会调整n的值,只拷贝到string的末尾

class Solution {
public:
    string reverseLeftWords(string s, int n) {
        string start = s.substr(0, n);
        string end = s.substr(n, s.size() - n);
        string res = end + start;
        return res;
    }
};

 

posted @ 2023-02-28 13:00  盏茶  阅读(13)  评论(0)    收藏  举报