- #include<bits/stdc++.h>
- #include"../顺序串算法库/shunxuchuan.h"
- using namespace std;
- void trans(sqstring *&s,char c1,char c2)///将串s中所有值为c1的字符换成值为c2的字符
- {
- int i;
- if(s->length>0)///这个没啥好说的
- {
- for(i=0;i<s->length;i++)
- if(s->data[i]==c1)
- s->data[i]=c2;
- }
- }
- void daoguolai(sqstring &s)///OK
- {
- int i,k;
- char te;
- if(s.length>0)
- {
- k=s.length-1;
- for(i=0;i<s.length/2;i++)///就地逆置
- {
- te=s.data[i];///经典的写法,设置一个中间变量
- s.data[i]=s.data[k];
- s.data[k]=te;
- k--;
- }
- }
- }
- void shanqu(sqstring &s,char c)///OK
- {
- int i,j,k=0;
- if(s.length>0)
- {
- for(i=0;i<s.length;i++)
- {
- if(s.data[i]==c)
- {
- k++;///一开始忘了计数,因为字符串的长度变了
- for(j=i;j<s.length;j++)
- s.data[j]=s.data[j+1];
- }
- }
- }
- s.length=s.length-k;
- }
- sqstring gonggong(sqstring s1,sqstring s2)///感觉老师的叙述比较模糊,容易让人产生误解,不知道到底怎么求子串
- {
- int i,j,k=0;
- sqstring s3;
- for(i=0;i<s1.length;i++)
- {
- for(j=0;j<s2.length;j++)
- if(s1.data[i]==s2.data[j])///感觉我这样写更好看呀,当然也有可能是我写错了
- {
- s3.data[k]=s1.data[i];
- k++;
- break;
- }
- }
- s3.length=k;
- return s3;
- }
- int main()
- {
- sqstring s,s1,s2,s3,s4;
- sqstring *t;
- char a[100],b[100],c[100];
- gets(a);
- jianchuan(s,a);
- display(s);
- t=&s;
- trans(t,'t','d');
- display(s);
- daoguolai(s);
- display(s);
- shanqu(s,'a');
- display(s);
- gets(b);
- gets(c);
- jianchuan(s1,b);
- jianchuan(s2,c);
- s3=gonggong(s1,s2);
- display(s3);
- return 0;
- }
06-24
06-24
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交