字符串搜索

原创 2008年09月29日 14:44:00
判断字符串b的所有字符是否都在字符串a中出现过,a, b都是可能包括汉字的字符串,b中重复出现的汉字,那么a中也要至少重复相同的次数。 
汉字使用gbk编码(简单的说,用两个字节表示一个汉字,高字节最高位为1的代表汉字,低字节最高位可以不为1)。 
int is_include(char *a, char *b); 
返回0表示没有都出现过,返回1表示都出现过。请给出所给算法的复杂度分析,尤其是字符串长度不同的情况下的复杂度分析


int is_include(char *a,char *b)
{
  int hanzi[65535]={0};
  int zimu[256]={0};
  char *p=a;
  while(*p!='/0')
  {
  if (*p&128==128&&*(p+1)!='/0')
  {
  hanzi[*p * 8 + *(p+1)]++;
  p+=2;
  }
  else
  {
  zimu[*p]++;
  p+=1;
  }
  }
  p=b;
  while(*p!='/0')
  {
  if (*p&128==128&&*(p+1)!='/0')
  {
  if (hanzi[*p * 8 + *(p+1)]>0)
  {
  hanzi[*p * 8 + *(p+1)]--;
  }
  else return 0;
  p+=2;
  }
  else
  {
  if (zimu[*p]==0)
  {
  return 0;
  }
  p+=1;
  }
  }
  return 1;
}

转帖,未验证

[算法系列之十四]字符串匹配之Morris-Pratt字符串搜索算法

前言我们前面已经看到,蛮力字符串匹配算法和Rabin-Karp字符串匹配算法均非有效算法。不过,为了改进某种算法,首先需要详细理解其基本原理。我们已经知道,暴力字符串匹配的速度缓慢,并已尝试使用Rab...
  • SunnyYoona
  • SunnyYoona
  • 2015年02月06日 09:56
  • 1509

【C语言】查找字符串

实例: 在字符串abcccdefg中寻找是否存在cdef 代码:#include int panduan() { char root[]="abcccdefg"; char aim[]="c...
  • zhangchaoq
  • zhangchaoq
  • 2015年05月08日 16:22
  • 455

字符串搜索函数

  ///   /// 字符串搜索方法,  ///   /// 子字符串  /// 备查字符串  /// 返回子字符串在备查字符串的位置,  /// -1表示找不到  /// 0以上找到了  publ...
  • gavinou
  • gavinou
  • 2006年06月06日 23:06
  • 627

字符串搜索-java

Java源码字符串匹配 static int indexOf(char[] source,char[] target) { char first = target[0]; ...
  • sisyphus_z
  • sisyphus_z
  • 2016年12月27日 13:31
  • 103

字符串搜索之KMP算法(伪代码)

之前的Rabin-Karp算法虽然在一定程度上达到了优化,但是最坏情况下也是O(nm)的复杂度。   接下来说说KMP算法,复杂度是线性的O(n+m)  前缀表 • 我们可以预先计算大小为m的前缀表来...
  • onthewaytotop
  • onthewaytotop
  • 2016年07月21日 20:38
  • 409

Java字符串搜索

可以使用indexOf()和lastIndexOf()方法获取一个字符或字符串在另外一个字符串中的的索引。例如, public class Main { public static void m...
  • ilvest
  • ilvest
  • 2017年03月22日 08:54
  • 122

字符串搜索(1)

char *find_char(char const*source, char const *chars) { for (; *source != '\0';) { char *temp = ...
  • yangliweng2
  • yangliweng2
  • 2016年12月29日 18:53
  • 113

字符串搜索命令

Linux字符串搜索命令
  • a464700300
  • a464700300
  • 2017年01月19日 10:56
  • 73

java处理字符串搜索嵌套结构的方法

在用java分析HTML文本时,如果要取出有嵌套结构的节点之间的内容,不能直接用正则表达式来处理,因为java所带的正则表达式不支持嵌套结构的描述,虽然Perl、.Net、PHP可以支持。这时可以先用...
  • indexchen
  • indexchen
  • 2012年02月06日 14:51
  • 1948

字符串处理兵器库——查找字符串中的特定子串

字符串处理兵器库——查找字符串中的特定子串问题想要知道一个字符串是否包含一个特定的子串。例如,想查看email地址是否包含一个@。解决方案使用strpos()函数。解决这个问题的代码如下: ...
  • sinat_33994744
  • sinat_33994744
  • 2017年03月01日 11:14
  • 226
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:字符串搜索
举报原因:
原因补充:

(最多只允许输入30个字)