zoukankan      html  css  js  c++  java
  • 根据输入偏移 旋转字符串

    要求 

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

    比如输入

    "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 达到目的

  • 相关阅读:
    php extends
    php 冒泡排序
    php base64_encode和base64_decode 编码/解码url
    php use
    php命名空间示范
    php 传一个url抓取此页面所有的链接
    pyspark
    【P1330】 封锁阳光大学
    [p1967] 货车运输
    分治的思想
  • 原文地址:https://www.cnblogs.com/itdef/p/6089561.html
Copyright © 2011-2022 走看看