1.1字符串旋转

时间:2023-01-06 19:44:42
/*字符串旋转 
abcedf
cbaedf cbafde defabc*/
#include<iostream> 
#include<cstring>
using namespace std;
void ReverseString (char *s,int from,int to){//3 5
	while(from<to){			 //3<5 	4==4
		char t=s[from];		//t=s[3]
		cout<<"the t is :"<<t<<endl;
		s[from++]=s[to];	//s[3]=s[5]
		cout<<"after reverse,the s[from] is :"<<s[from]<<endl;
		s[to--]=t;			//s[5]=t;
		cout<<"after reverse,the s[to] is :"<<s[to]<<endl;
	}
}
void LeftRotateString(char *s,int n,int m){//三步反转 5 3
	m%=n;//若要左移动大于n位,那么与%n是等价的
    ReverseString (s,0,m-1); //将X所有字符反转 abc->cba 0 2
    cout<<"after the first swap is :"<<s<<endl;
    ReverseString (s,m,n-1); //将Y所有字符反转 def->fed 3 5
    cout<<"after the second swap is :"<<s<<endl;
    ReverseString (s,0,n-1); //整体反转 0 5	   abcdef->defabc 
    cout<<"after the third swap is :"<<s<<endl;
}
int main(){
	char str[10];
	cin>>str;
	int len=strlen(str);
	int left; 
	cout<<"left :";
	cin>>left;
	cout<<"the lenght of the string is:"<<len<<endl;
	LeftRotateString(str,len,left);
	cout<<"after the leftrotate,the string is:"<<str<<endl; 
	return 0;
}