美文网首页
剑指offer 58-翻转字符串

剑指offer 58-翻转字符串

作者: 千千鱼 | 来源:发表于2018-05-12 09:31 被阅读0次

    方案:灵活运用C++中的erase函数,insert函数,append函数

    注:str.push_back() 一次只能输入一个字符,而append能够在末尾添加个字符串,个人认为和str+str2是一个效果。

    • 需要注意的问题,当str为空字符串的时候!

    我自己的代码

    class Solution {
    public:
        string LeftRotateString(string str, int n) {
            if(str.size()==0)
                return str;
            if(n==0)
                return str;
            n=n%str.size();
            string temp;
            for(int i=0;i<n;i++){
                temp.push_back(str[i]);
            }  //在后来的思考中,str部分赋值可用  temp.assign(str,0,n); 替代,注意不是迭代器,而是int 型索引哦!
            str.erase(str.begin(),str.begin()+n);
            str.append(temp);
            return str;
        }
    };
    

    其他人的666的代码

    //链接:[https://www.nowcoder.com/questionTerminal/12d959b108cb42b1ab72cef4d36af5ec](https://www.nowcoder.com/questionTerminal/12d959b108cb42b1ab72cef4d36af5ec)
    //来源:牛客网
    
    class Solution {
    
    public:
    
    string LeftRotateString(string str, int n) {
    
    int len = str.length();
    
    if(len == 0) return "";
    
    n = n % len;
    
    str += str;
    
    return str.substr(n, len);
    
    }
    
    };
    
    • 突然想到,一直受str赋值成另一str的子部分困扰, 现在想来,用str.copy()应该可以:int copy(char *s, int n, int pos = 0) const;//把当前串中以pos开始的n个字符拷贝到以s为起始位置的字符数组中,返回实际拷贝的数目 //但是只能copy到字符数组中去!而不是copy到字符串。

    • 受到启发,用s.substr()函数,或者assign()函数应该也可以。

    • 首先讲赋值,第一个赋值方法当然是使用操作符=,新值可以是string(如:s=ns) 、c_string(如:s=”gaint”)甚至单一字符(如:s='j')。还可以使用成员函数assign(),这个成员函数可以使你更灵活的对字符串赋值。还是举例说明吧:
      s.assign(str); //不说
      s.assign(str,1,3);//如果str是”iamangel” 就是把”ama”赋给字符串
      s.assign(str,2,string::npos);//把字符串str从索引值2开始到结尾赋给s
      s.assign(“gaint”); //不说
      s.assign(“nico”,5);//把'n' ‘I' ‘c' ‘o' ‘/0'赋给字符串
      s.assign(5,'x');//把五个x赋给字符串

    • 题取子串的函数是:substr(),形式如下:
      s.substr();//返回s的全部内容
      s.substr(11);//从索引11往后的子串
      s.substr(5,6);//从索引5开始6个字符

    • string 模板库 博客 https://blog.csdn.net/fdqw_sph/article/details/54233971 讲的还是很明白的!

    相关文章

      网友评论

          本文标题:剑指offer 58-翻转字符串

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