文章
16
粉丝
82
获赞
1
访问
13.9k
这是两个字符串s1,s2跟字符串s匹配的问题,求匹配的两个字符串的最大间隔。求问第二个字符串匹配(从s的末尾开始跟s2的末尾倒着匹配便于解题)的算法错在哪里了?(为了看到匹配情况我把两个匹配的字符输出了,但是输出的结果怪怪的),第一个匹配就没问题
char s[300],s2[10],s1[10];
int len=0,len1=0,len2=0;
char ch;
while((scanf("%c",&ch))&&ch!=',') {s[len++]=ch;}
while((scanf("%c",&ch))&&ch!=',') {s1[len1++]=ch;}
while(scanf("%c",&ch)!=EOF) {s2[len2++]=ch;}//题目要求三组字符串用逗号分隔
int i,j,left,right;//left和right用来记录两个字符串匹配的起始点
int flag;//第一组匹配
for(i=0;i<len;i++)
{
flag=0;//记录匹配长度;
for(j=0;j<len1;j++)
{ printf("%c %c\n",s[i+j],s1[j]);
if(s[i+j]==s1[j])
{
flag++;
}
else
 ...
登录后发布评论
请问我这个最后俩乱码是因为这个数组最后没有结束符吗?
然后我在后面加了结束符就没有了,所以是说如果通过读取单个字符的形式输入字符串的话,是不是得记得在末尾加个结束符,但是如果是gets的话就不用
我跑了一下你的代码,没什么问题啊
代码如下:
第二组既然倒着匹配了,那么这个也应该倒着
for(j=0;j<len2;j++)
变成
for(j=len2-1;j>=0;j--)
这样算坐标更容易理解