#include <iostream>
using namespace std;
#define maxSize 101
typedef struct String
{
char data[maxSize];
int length;
}String;
/*
//把值为ch1的字符替换为ch2 天勤P103 二 1(1)
void Replace(String &str,char ch1,char ch2)
{
int len=str.length;
if(len<=0)
return;
for(int i=0;i<len;i++)
{
if(str.data[i]==ch1)
{
str.data[i]=ch2;
}
}
}
int main()
{
String str;
int n;
cin>>n;
str.length=n;
for(int i=0;i<n;i++)
{
cin>>str.data[i];
}
Replace(str,'a','b');
for(int i=0;i<n;i++)
{
cout<<str.data[i]<<endl;
}
}
//7
//a f e a a a a
*/
/*
//字符串逆转 天勤P103 二 1(2)
void reverse(String &str)
{
int len=str.length;
int i=0;
int j=len-1;
while(i<j)
{
int t=str.data[i];
str.data[i]=str.data[j];
str.data[j]=t;
i++;
j--;
}
}
int main()
{
String str;
int n;
cin>>n;
str.length=n;
for(int i=0;i<n;i++)
{
cin>>str.data[i];
}
reverse(str);
for(int i=0;i<n;i++)
{
cout<<str.data[i]<<endl;
}
}
//7
//a f e a a a a
*/
/*
//删除值为ch的节点 天勤P103 二 1(3)
void Delete(String &str,char ch)
{
for(int i=0;i<str.length;i++) //str.length在变!!不能赋值给len再写循环!!
{
if(str.data[i]==ch)
{
for(int j=i+1;j<str.length;j++)
{
str.data[j-1]=str.data[j];
}
str.length--;
}
}
}
int main()
{
String str;
int n;
cin>>n;
str.length=n;
for(int i=0;i<n;i++)
{
cin>>str.data[i];
}
Delete(str,'a');
for(int i=0;i<str.length;i++)
{
cout<<str.data[i]<<endl;
}
}
//7
//a f e a a a a
*/
/*
//子串匹配 天勤P103 二 1(4)
int KMP(String str,String substr,int pos)
{
int len1=str.length;
int len2=substr.length;
int i=pos,j=0;
int k=i;
if(len1<=0||len2<=0)
return -1;
while(i<len1)
{
while(j<len2)
{
if(substr.data[j]!=str.data[i])
{
break;
}
j++;
i++;
}
if(j<len2)
{
j=0;
i=++k;
}
else
{
return k;
}
}
return -1;
}
int main()
{
String str,substr;
int n,n2;
cin>>n>>n2;
str.length=n;
substr.length=n2;
for(int i=0;i<n;i++)
{
cin>>str.data[i];
}
for(int i=0;i<n2;i++)
{
cin>>substr.data[i];
}
int d=KMP(str,substr,0);
cout<<d<<endl;
}
//5 3
//a s d f g
//d f g
*/
/*
//删除i~i+j-1的元素 天勤P103 二 2
int Delete(String &str,int i,int j)
{
int len=str.length;
if(i<1||i>len)
return 0;
int k=i+j;
if(k>len)
{
str.length=i-1; //注意是i-1,因为i也被删了
return 1;
}
else
{
for(int s=i+j;s<=len;s++)
{
str.data[s-j]=str.data[s];
}
str.length-=j;
return 1;
}
}
int main()
{
String str;
int n;
cin>>n;
str.length=n;
for(int i=1;i<=n;i++)
{
cin>>str.data[i];
}
Delete(str,4,5);
for(int i=1;i<=str.length;i++)
{
cout<<str.data[i]<<endl;
}
}
*/
/*
//用其他字符串替换i~j间的字符 天勤P103 二 3
int Replace(String &str1,String str2,int i,int j)
{
int len1=str1.length;
int len2=str2.length;
if(i<1||j>len1||(j-i+1)>len2)
{
return 0;
}
int k=1;
for(int s=i;s<=j;s++)
{
str1.data[s]=str2.data[k];
k++;
}
return 1;
}
int main()
{
String str,substr;
int n,n2;
cin>>n>>n2;
str.length=n;
substr.length=n2;
for(int i=1;i<=n;i++)
{
cin>>str.data[i];
}
for(int i=1;i<=n2;i++)
{
cin>>substr.data[i];
}
Replace(str,substr,4,5);
for(int i=1;i<=str.length;i++)
{
cout<<str.data[i]<<endl;
}
}
//7
//5
//a s d f g h j
//e r t y u
*/
/*
//计算子串出现的次数 天勤P103 二 4
int Count(String str,String substr)
{
int len1=str.length;
int len2=substr.length;
int i=0,j=0,k=i;
int cnt=0;
while(i<len1)
{
while(j<len2)
{
if(str.data[i]==substr.data[j])
{
i++;
j++;
}
else
break;
}
if(j<len2)
{
j=0;
i=++k;
}
else
{
cnt++;
i++;
j=0;
}
}
return cnt;
}
int main()
{
String str,substr;
int n,n2;
cin>>n>>n2;
str.length=n;
substr.length=n2;
for(int i=0;i<n;i++)
{
cin>>str.data[i];
}
for(int i=0;i<n2;i++)
{
cin>>substr.data[i];
}
int d=Count(str,substr);
cout<<d<<endl;
}
//7 3
//a s d f s d f
//s d f
*/
/*
//找出str1中第一个不在str2中出现的字符 天勤P103 二 5
#include <map>
typedef struct stringX
{
char data;
struct stringX *next;
}stringX;
char Search(stringX *str1,stringX *str2)
{
stringX *p=str2;
map<char,int>mmap; //用来记录str2中的字符
for(int i=0;i<101;i++)
mmap[101]=0;
while(p!=NULL)
{
mmap[p->data]++;
p=p->next;
}
stringX *q=str1;
while(q!=NULL)
{
if(mmap[q->data]==0)
return q->data;
q=q->next;
}
return '\0';
}
int main()
{
stringX *str=(stringX*)malloc(sizeof(stringX));
stringX *substr=(stringX*)malloc(sizeof(stringX));
str->next=NULL;
stringX *p=str;
for(int i=0;i<9;i++)
{
stringX *k=(stringX*)malloc(sizeof(stringX));
cin>>k->data;
k->next=NULL;
p->next=k;
p=k;
}
stringX *q=substr;
for(int i=0;i<5;i++)
{
stringX *k=(stringX*)malloc(sizeof(stringX));
cin>>k->data;
k->next=NULL;
q->next=k;
q=k;
}
char s=Search(str,substr);
cout<<s<<endl;
}
//a s d f g h j k l
//a f s e n
*/