| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1208 人关注过本帖, 1 人收藏
标题:关于一道字符串排序问题
取消只看楼主 加入收藏
H_K
Rank: 1
等 级:新手上路
帖 子:13
专家分:3
注 册:2010-11-30
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:4 
关于一道字符串排序问题
各位大大好,我在某网站上看到一道字符串排序的题目,就是有一长一短两个字符串,求判断一个短字符串的全部字符是否在包含在一个长字符串内,例如
“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);
}
搜索更多相关主题的帖子: 字符串 网站 元素 
2011-04-25 20:45
H_K
Rank: 1
等 级:新手上路
帖 子:13
专家分:3
注 册:2010-11-30
收藏
得分:0 
回复 2楼 laoyang103
如果主字串和从字串都很长的话,那样时间开销会不会大了点啊?其实我感觉我刚看到的这个方法无论多长,只需把主字串、从字串各遍历一遍就可以了(前提是如果全是字母),呵呵,探讨一下,我只是不知道我错在哪?
2011-04-25 21:13
H_K
Rank: 1
等 级:新手上路
帖 子:13
专家分:3
注 册:2010-11-30
收藏
得分:0 
好吧,KMP我很难看懂,你写的我倒是看懂了,thanks!!!

但是我的那个,……纠结……

怎么查错呢?
2011-04-26 12:26
H_K
Rank: 1
等 级:新手上路
帖 子:13
专家分:3
注 册:2010-11-30
收藏
得分:0 
回复 8楼 mm1010220cs
大哥,还是你懂我
……
不过,编译时num[int(short_str[i])……]
这句貌似提示语法错误;
其实我觉得int型和char型在不溢出的情况下是可以互换的,不用再加int()了吧?
2011-04-26 14:34
H_K
Rank: 1
等 级:新手上路
帖 子:13
专家分:3
注 册:2010-11-30
收藏
得分:0 
额,好吧……
分先给了先,不过想问一下,10楼你输出的结果是什么?
2011-04-26 20:58
快速回复:关于一道字符串排序问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012468 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved