分治左移(c++)

  • 时间:
  • 来源:互联网
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wang_yr/article/details/103257211

设计分治算法,实现将数组A[n]中所有元素循环左移k个位置,要求时间复杂度为O(n),空间复杂度为O(1)。

Input

多组样例输入输出,每组样例一行
输入一个字符数组 A(只包含小写字母,长度小于10000),左移的位数 k(0≤k≤10000)

Output

左移后的字符串

Sample Input

abcdefgh 3
abcd 2

Sample Output

defghabc
cdab

 

AC代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
	string s;
	int k;
	while(cin>>s>>k){
		int len=(int)s.size();
		for(int i=k;i<len;i++){
			cout<<s[i];
		}
		for(int i=0;i<k;i++){
			cout<<s[i];
		}
		cout<<endl;
	}
	return 0;
} 

非常简单,直接输出。

本文链接http://element-ui.cn/news/show-93.aspx