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

  • 相关阅读:
    【声纹识别】 kaldi callhome diarization
    python3 类型提示
    公钥私钥,HTTPS,HTTP通俗讲解
    一图学会MySQL的JOIN
    链表翻转(看图学)
    如何理解 Python 的赋值逻辑
    Python十大排序算法
    Python-functools (reduce,偏函数partial,lru_cache)
    Python-类型注解(3.5引入)
    Python-装饰器
  • 原文地址:https://www.cnblogs.com/itdef/p/6089561.html
Copyright © 2011-2022 走看看