牛客题解 | 小明的字符串
题目
题解
题目难度:简单难度
知识点:字符串、数学逻辑
方法(一)
字符串拼接函数substr()用法说明:
如果string s="0123456789";
string sub1=s.substr(5); 表示从下标5开始一直到字符串结束
sub1="56789";
string sub2=s.substr(3,5);表示从下标3开始一直到后面5位数结束
sub2="34567";
#include <iostream>
using namespace std;
int main()
{
int N,T,t,x;
cin>>N>>T;
string s;
cin>>s;
for(int i=0;i<t;i++) { cin>>t>>x;
if(t==1)
s=s.substr(s.size()-x)+s.substr(0,s.size()-x);
if(t==2)
cout<<s[x]<<endl; } return 0; ``` ##方法(二) 不采用字符串的拼接,类似环形数组,每次用flat代表字符串起点位置,初始时flat="0。" ####当type="2时:" 那么字符串的起始位置向后移动n-x为,即flat="flat+N-x,因为为环状当flat=N时即为flat=0,因此进行取模操作flat%=N;" 当前字符串的起点位置为flat,需要找到第x位,即flat+x。同样由于形成环,需要进行取,即(flat+x)%n。 #include <iostream>
using namespace std;
int main()
{
int N,T,t,x;
cin>>N>>T;
string s;
cin>>s;
int flat=0;
for(int i=0;i<t;i++) { cin>>t>>x;
if(t==1){
flat+=N-x;
flat%=N;
}
if(t==2)
cout<</t;i++)></s[x]<<endl;></t;i++)></iostream>

浙公网安备 33010602011771号