#2#4
查看原帖
#2#4
813706
kyyfw楼主2024/2/28 21:42
#include<iostream>
#include<cmath>
#include<vector>
#include<algorithm>
#include<cstring> 
#include<cstring>
#include<cstdio>
using namespace std;
int main()
{
	int q;char str[10000];int len;//len指向最后一位数字 
	cin>>q;
	scanf("%s",str);
	while(q--){
		int b;
		cin>>b;
		if(b==1){
			char ss[100];
			scanf("%s",ss);
			
			len=strlen(str)+strlen(ss);
			
			int len1=0;
			//从str后一位开始 
			for(int i=strlen(str);i<=len;i++){
				str[i]=ss[len1++];
			}
			
			for(int i =0;i<=len;i++){
				printf("%c",str[i]);
			}
			
			printf("\n");
		}
		else if(b==2){
			int k1,k2;
			cin>>k1>>k2;
			//从k1开始一共k2个字符 覆盖str前k2 
			for(int i=0;i<k2;i++){
				str[i]=str[k1++];
			}
			len =k2-1;//指针最后一位
			 
			for(int i=0;i<=len;i++){
				printf("%c",str[i]);
			}
			printf("\n");
		}
		else if(b==3){//k1前插字符串ss 
			int k1;char ss[100];
			
			cin>>k1;
			scanf("%s",ss);
			
			char cu[100];int len1=0;//cu指针, 
			
			//k1之后存入cu					
			for(int i=k1;i<=len;i++){
				cu[len1++]=str[i];
			}
			int len2=0;//ss指针  
			for(int i=k1;i<k1+strlen(ss);i++){
				str[i]=ss[len2++];
			}
			len2=0;//新cu指针 
			for(int i=k1+strlen(ss);i<k1+strlen(ss)+len1;i++){
				str[i]=cu[len2++]; 
			}
			len =len +strlen(ss);
			for(int i=0;i<=len;i++){
				printf("%c",str[i]);
			}
			printf("\n");
		}
		else{   
			char ss[100];
			scanf("%s",ss);
			
			int flag=-1;//不为-1则输出位置 
			for(int i=0;i<=len;i++){
				if(str[i]==ss[0]){
					for(int j=0;j<strlen(ss);j++){
						if(str[i+j]!=ss[j]){
							break;
						}
						if(j==strlen(ss)-1){
							flag=i;
						}
					}
				}
				if(flag!=-1)break;
			}
			if(flag!=-1)printf("%d\n",flag);
			else printf("-1\n");
		}
	}
	return 0;
}
#2输入
6
aaaaaaaaaaaaaaaaaaaaaaa
4 aaaaaaaa
1 aaaaa
4 b
2 2 3
3 0 fafafafa
4 fafa
输出
0
aaaaaaaaaaaaaaaaaaaaaaaaaaaa
-1
aaa
fafafafaaaa
0
#4无数据

#2我的输出一样为什么不能过

2024/2/28 21:42
加载中...