zoukankan      html  css  js  c++  java
  • 1-5-字符串的旋转

     1 /*
     2     题目描述:
     3         对于一个字符串,和字符串中的某一位置,请设计一个算法,将包括i位置在内的左侧部分移动到右边,
     4         将右侧部分移动到左边。给定字符串A和它的长度n以及特定位置p,请返回旋转后的结果。
     5     测试样例:
     6         "ABCDEFGH",8,4
     7         返回:"FGHABCDE"
     8 */
     9 /*
    10     eg: A = "ABCDEFGH", n = 8, p = 4
    11     首先把A反转, A = "HGFEDCBA";
    12     然后把[0,n-1-p-1] 和 [n-1-p, n-1]分别反战:
    13     得到 FGHABCDE。
    14     时间复杂度为O(n),空间复杂度为O(1)。
    15     使用reverse函数反转。
    16 */
    17 #include <iostream>
    18 #include <string>
    19 using namespace std;
    20 
    21 string rotateString(string A, int n, int p) {
    22     if (n <= 0 || p <= 0 || p >= n)
    23         return "";
    24     reverse(A.begin(), A.end());
    25     reverse(A.begin(), A.begin()+n-1-p);
    26     reverse(A.begin()+n-1-p, A.end());
    27     return A;
    28 }
    29 
    30 int main(){
    31     string a;
    32     cin >> a;
    33     cout << rotateString(a,a.length(), 4);
    34     return 0;
    35 }
  • 相关阅读:
    幻方~未完待续
    过河(DP)
    生日蛋糕(DFS)
    n皇后问题<dfs>
    POJ 1182_食物链
    POJ 2431 Expedition【贪心】
    POJ 3268_Silver Cow Party
    POJ 1061 青蛙的约会【扩欧】
    【数学】扩展欧几里得算法
    Codeforces 404D Minesweeper 1D
  • 原文地址:https://www.cnblogs.com/qianmacao/p/4884737.html
Copyright © 2011-2022 走看看