c++
数组的循环左移算法,
把前n个元素逆置,再把后s.size-1个元素逆置,最后把整个数组元素逆置
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
void zuoyi(string s,int n)
{
string ss=s.substr(0,n-1);
reverse(ss.begin(),ss.end());
string mm=s.substr(n);
reverse(mm.begin(),mm.end());
string nn=ss+mm;
reverse(nn.begin(),nn.end());
cout<<nn;
}
void main()
{
string s;
int n;
cout<<"请输入字符串"<<endl;
cin>>s;
while(1)
{
cout<<"请输入要座椅的字符的长度"<<endl;
cin>>n;
if(n>s.size())
{
cout<<"对不起,你输入的要左移的长度超过了字符串的长度"<<endl;
cout<<"请重新输入"<<endl;
}
else
break;
}
zuoyi(s,n);
}
#include<iostream>
#include<string.h>
using namespace std;
void reverse(char s[],int m,int j)
{
int temp;
int h=(j-m+1)/2;
for(int i=0;i<h;i++)
{
temp=s[i+m];
s[i+m]=s[j-i];
s[j-i]=temp;
}
}
void zuoyi(char s[],int n)
{
int i=strlen(s);
reverse(s,0,n-1);
reverse(s,n, i-1);
reverse(s,0,i-1);
cout<<s;
}
void main()
{
char s[100];;
int n;
cout<<"请输入字符串"<<endl;
cin>>s;
while(1)
{
cout<<"请输入要左移的字符的长度"<<endl;
cin>>n;
if(n>strlen(s))
{
cout<<"对不起,你输入的要左移的长度超过了字符串的长度"<<endl;
cout<<"请重新输入"<<endl;
}
else
break;
}
zuoyi(s,n);
}