关于一道字符串排序问题
各位大大好,我在某网站上看到一道字符串排序的题目,就是有一长一短两个字符串,求判断一个短字符串的全部字符是否在包含在一个长字符串内,例如“ABC”包含在“ABCDEF”内,而“ABKL”没有包含在内,我看到一个思路比较有意思,就是定义一个26长度的字符数组,先遍历短字符串,如果有‘A’,那么数组的第一个元素为‘F’,如果有‘B’,则第二个元素为‘F’,以此类推,一一对应,数组其他的元素不做操作,然后再遍历长字符串,也是一一对应,不过是把数组里对应的元素赋值成‘T’(就这点小改动),最后遍历这个数组,只要有一个‘F’,那么证明短字符串没有包含在内,如果一个‘F’都没有,那么证明包含在内……
以此,我尝试写了个程序,但是依然输不出正确的结果,无论输入什么值,都是输出包含在内,请大大帮我看一下错在哪,谢谢!
代码如下:
(红色的部分是我为了查看中途变量的值而加上去的,可以不要这些)
#include<stdio.h>
#include<string.h>
void main()
{
char long_str[]="ABCDEFG";
char short_str[]="CKA";
char num[26];
int long_num,short_num,i,flag;
long_num=strlen(long_str);
short_num=strlen(short_str);
printf("%d\n",long_num);
printf("%d\n",short_num);
for(i=0;i<26;i++)
{
num[i]='T';
}
for(i=0;i<26;i++)
{
printf("%c",num[i]);
}
printf("\n");
for(i=0;i<short_num;i++)
{
if((short_str[i]>='A')&&(short_str[i]<='Z'))
{
num[i-'A']='F';
}
}
for(i=0;i<26;i++)
{
printf("%c",num[i]);
}
printf("\n");
for(i=0;i<long_num;i++)
{
if((long_str[i]>‘A’)&&(long_str[i]<‘Z’))
{
num[i-'A']='T';
}
}
for(i=0;i<26;i++)
{
printf("%c",num[i]);
}
printf("\n");
flag=0;
for(i=0;i<26;i++)
{
if(num[i]=='F')
{
flag=1;
}
}
if(flag==0)
{
printf("yes\n");
}
if(flag==1)
{
printf("not\n");
}
printf("%d\n",flag);
}