• 将一个string左移N位置


     使用了《编程珠玑》上的解法。

    #include <iostream>
    #include <string>
    using namespace std;
    
    //注意这里使用了XOR进行交换的方法,这种方法不能让一个数和自身交换
    void Reverse(string &str, int left, int right){
        for(; left < right; left++, right--){
            str[left] = str[left] ^ str[right];
            str[right] = str[left] ^ str[right];
            str[left] = str[left] ^ str[right];
        }
    }
    
    void ShiftStr(string &str, int offset){
        int len = str.length();
        offset = offset>=0 ? offset%len : offset%len + len;
    
        Reverse(str, 0, offset-1);
        Reverse(str, offset, len-1);
        Reverse(str, 0, len-1);
    }
    
    int main()
    {
        string str;
        for (int i = -5; i <= 5; i++){
            str = "abcdefghijklmn";
            ShiftStr(str, i);
            cout<<"Move left "<<i<<" steps : "<<str<<endl;
        }
        return 0;
    }

    EOF

  • 相关阅读:
    JavaMail
    Web的文件下载
    Web的文件上传
    Tcp 数据对象传输接口对象设计
    m个元素中选取n的组合
    PyQT Quick Start
    版本发布自动触发测试
    plantUML 实操
    Python 版本对比
    Some Python Tricks
  • 原文地址:https://www.cnblogs.com/lihaozy/p/2814423.html
Copyright © 2020-2023  润新知