码迷,mamicode.com
首页 > 其他好文 > 详细

1-5-字符串的旋转

时间:2015-10-16 11:42:06      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:

 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 }

 

1-5-字符串的旋转

标签:

原文地址:http://www.cnblogs.com/qianmacao/p/4884737.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!