• 根据输入偏移 旋转字符串


    要求 

    根据输入的字符串和偏移进行旋转

    比如输入

    "abcdefg" 0

    获得"abcdefg"

    输入"abcdefg" 2

    获得fgabcde

    #include <string>
    #include <iostream>

    using namespace std;

    string Reverse(string& s, size_t begin, size_t end)
    {
    if (begin >= s.size() ||
    end >= s.size())
    return s;

    while (begin < end)
    {
    char tmp = s[begin];
    s[begin] = s[end];
    s[end] = tmp;
    begin++;
    end--;
    }
    return s;
    }

    string RotateString(string s, int offset)
    {
    if (s.empty() || offset > s.size())
    return s;

    int length = s.size();
    Reverse(s,0,length-offset-1);
    Reverse(s, length - offset ,length-1);
    Reverse(s,0,length-1);

    return s;
    }

    关键在这几步的处理

    Reverse(s,0,length-offset-1);
    Reverse(s, length - offset ,length-1);
    Reverse(s,0,length-1);

    假设输入 "abcdefg" 0

    实际上就是一下三步变换

    1 edcba   fg

    2 edcba gf

    3 上一步字符串 整个的倒转

    变成 fgabcde 达到目的

  • 相关阅读:
    Android中的httpclient框架发送get请求
    成员函数的重载&amp;&amp;隐藏&amp;&amp;覆盖
    子墨庖丁Android的ActionBar源代码分析 (一)实例化
    Hadoop2.x介绍与源代码编译
    NFS 服务器的配置
    tftp 服务器的配置
    LINUX内核及应用程序移植工作
    u-boot 移植工作目录
    Linux 下工作用户及环境
    zless
  • 原文地址:https://www.cnblogs.com/itdef/p/6089561.html
Copyright © 2020-2023  润新知