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

  • 相关阅读:
    Insertion Sort Gym
    Codeforces Round #524 (Div. 2) C. Masha and two friends 思路
    PTA 数据结构——是否完全二叉搜索树
    Crane UVA
    Unidirectional TSP UVA
    排序二叉树的建立,查询与删除
    The Tower of Babylon UVA
    DAG上的动态规划——嵌套矩阵问题
    Paper Folding UVA
    多图片上传插件
  • 原文地址:https://www.cnblogs.com/itdef/p/6089561.html
Copyright © 2011-2022 走看看