求大佬,只有20分,最后一个案例过了
查看原帖
求大佬,只有20分,最后一个案例过了
255791
衛宮士郎楼主2023/10/30 00:54

有大佬帮忙看下代码吗,呜呜呜呜呜呜呜呜呜呜呜

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
void InsertAfter(char *s1,char *s2)
{
	int i=0,j=0;
	while(s1[i++]!='\0');
	i--;
	while(s2[j])
	s1[i++]=s2[j++];	
}
void cut(char *s1,int i,int j)
{
	int pos = 0,k=0,len=0;
	char t[101] = { 0 };
	for (int pos = i; pos <= j+i; pos++)
		t[pos - i] = s1[pos];
	cout <<t << endl;
	len=strlen(t);
	while(s1[i])
	s1[i++]='\0';
	for(int k=0;k<len;k++)
	s1[k]=t[k];

}
void Insert(char *a,int pos,char *b)
{
	char  t[101] = { 0 };
	int len1 = strlen(a), len2 = strlen(b);
	for (int i = pos; i < pos+len2; i++)
		t[i - pos] = a[i];
	for (int j = pos; j < len2+pos; j++)
		a[j] = b[j - pos];
	int len3 = strlen(t);
	for (int i = 0; i < len3; i++)
		a[pos+len2 + i] = t[i];
	 
}
int bf(char *s1,char *s2)
{
	int l1=strlen(s1),l2=strlen(s2);
	int i=0,j=0,pos=0;
	if(s1==NULL||s2==NULL)
	return -1;
	while(i<l1&&j<l2)
	{
		if(s1[i]==s2[j])
			i++,j++;
		else
		{
		i=i-j+1;j=0;	
		}
	}
	if(i>l1)return -1;
	else return i-j;	
}
int main()
{
char c=0;
int n=0,num=0,a=0,b=0;
char s[101]={0},t[101]={0};
cin>>n>>s;
while(n--)
{
	cin>>num;
	switch(num)
	{
	case 1:
	cin>>t;
	InsertAfter(s,t);
	cout<<s<<endl;
	break;
	case 2:
	cin>>a>>b;
	cut(s,a,b);
	break;
	case 3:
	cin>>a>>t;
	Insert(s,a,t);
	cout<<s<<endl;
	break;
	case 4:
	cin>>t;
	cout<<bf(s,t);	
	break;
	}	
}

} 
2023/10/30 00:54
加载中...