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

  • 相关阅读:
    asp.net 页面定时跳转的小技巧
    获得 Windows phone 设备的信息
    如何自定义ToggleSwitch控件样式(转)
    云推送注意(MSDN链接)
    回顾:线程和进程的区别
    WebGL
    13种提升基于MVVM模式的WP7程序性能的方法(转)
    sample_code
    网址收藏
    Net中de日期格式
  • 原文地址:https://www.cnblogs.com/itdef/p/6089561.html
Copyright © 2011-2022 走看看