[九度][何海涛] Move!Move!!Move!!!
- 题目描述:
- 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!
- 输入:
- 多组测试数据,每个测试数据包含一个字符序列S和非负整数K。其中S的长度不超过1000。
- 输出:
- 对应每个测试案例,输出新序列。
- 样例输入:
-
UDBOJ 4 abba 1
- 样例输出:
-
JUDBO bbaa
类似于ab要变成ba,那么(aTbT)T = ba1 #include <iostream> 2 using namespace std; 3 4 void reverse(string &s, int beg, int end) 5 { 6 if (beg >= end) 7 return; 8 9 while(beg < end) 10 { 11 char c = s[beg]; 12 s[beg] = s[end]; 13 s[end] = c; 14 beg++; 15 end--; 16 } 17 } 18 19 int main() 20 { 21 string s; 22 int k; 23 24 while(cin >> s >> k) 25 { 26 k = k % s.size(); 27 reverse(s, 0, k - 1); 28 reverse(s, k, s.size() - 1); 29 reverse(s, 0, s.size() - 1); 30 cout << s << endl; 31 } 32 }