标签:
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 }
标签:
原文地址:http://www.cnblogs.com/qianmacao/p/4884737.html