质疑String的匹配算法

原创 2004年09月22日 21:04:00

        String类提供了查找子串的方法,包括 indexOf(String str) ,indexOf(String str,int fromIndex),lastIndexOf(String str),lastIndexOf(String str,int fromIndex)。
        我很奇怪为什么使用的是效率低下的普通算法,而没有使用高效的KMP算法,
我记得学数据结构的时候专门介绍了这个算法。下面是String的实现代码:
static int indexOf(char[] source, int sourceOffset, int sourceCount,
                       char[] target, int targetOffset, int targetCount,
                       int fromIndex) {
   if (fromIndex >= sourceCount) {
              return (targetCount == 0 ? sourceCount : -1);
   }
      if (fromIndex < 0) {
           fromIndex = 0;
      }
   if (targetCount == 0) {
        return fromIndex;
   }

        char first  = target[targetOffset];
        int i = sourceOffset + fromIndex;
        int max = sourceOffset + (sourceCount - targetCount);

    startSearchForFirstChar:
        while (true) {
      /* Look for first character. */
      while (i <= max && source[i] != first) {
      i++;
      }
      if (i > max) {
      return -1;
      }

      /* Found first character, now look at the rest of v2 */
      int j = i + 1;
      int end = j + targetCount - 1;
      int k = targetOffset + 1;
      while (j < end) {
     if (source[j++] != target[k++]) {
          i++;
        /* Look for str's first char again. */
          continue startSearchForFirstChar;
     }
      }
      return i - sourceOffset; /* Found whole string. */
        }
    }

SQL Server 2000中数据库质疑的恢复方法

原帖地址:http://topic.csdn.net/u/20081224/15/8058b7e7-9ae9-4951-aca2-2009f54b24e1.html,是有人问的问题,现在把回答总结一下...
  • yupeigu
  • yupeigu
  • 2011年08月07日 17:18
  • 5174

什么是质疑精神?

  • YidingHe
  • YidingHe
  • 2009年10月23日 20:59
  • 2130

SQL数据库质疑怎么解决呢?

今天重启了服务器居然发现数据库质疑。当时真的很急,因为开了竞价站,那么如何解决这个问题呢? 数据库质疑一般是因为据库的日志文件是损坏了。 那么如何解决这个问题呢? 第一、因为我的之前...
  • suntingting5009
  • suntingting5009
  • 2014年04月30日 09:13
  • 324

计算主义质疑(Query Algorithmism)

       随着数学和计算机技术的进展,计算的观念越来越显示其在各个领域的威力,从计算的角度审视世界,...
  • lee_eric
  • lee_eric
  • 2006年10月03日 11:03
  • 722

SQL SERVER 2005 数据库置疑修复

alter database 置疑数据库 set emergency go alter database 置疑数据库 set single_user with rollback immediate g...
  • jackmacro
  • jackmacro
  • 2010年09月15日 16:40
  • 4137

浅谈招标投标活动中质疑及投诉问题

招标投标活动中质疑及投诉问题
  • charleslei
  • charleslei
  • 2017年01月23日 11:18
  • 360

史上最浅显易懂的KMP算法讲解:字符串匹配算法

KMP算法是一种改进后的字符串匹配算法,由D.E.Knuth与V.R.Pratt和J.H.Morris同时发现,因此人们称它为克努特-莫里斯-普拉特操作(简称KMP算法)。 KMP算法又称“看毛片”算...
  • wangbaochu
  • wangbaochu
  • 2016年02月18日 20:32
  • 10413

SQL Server2008数据库置疑修复办法

-- 修改数据库为紧急模式 alter database P897A20_db set emergency -- 但用户模式 alter database P897A20_db set sing...
  • yz1988computer
  • yz1988computer
  • 2014年04月21日 13:30
  • 2379

数据库质疑删不掉也分离不了的解决办法

运行一下语句:USE   MASTER GO SP_CONFIGURE   'ALLOW   UPDATES ',1   RECONFIGURE   WITH   OVERRIDE GO UPDATE...
  • hank5658
  • hank5658
  • 2011年04月16日 12:20
  • 1295

数据库质疑及修复

1.错误的删除日志; 2.硬件(HD)损坏,造成日志和数据文件写错误; 3.硬盘的空间不够,比如日志文件过大; 解决办法一: 1. 删除原始的数据库: USE MASTER GO DR...
  • kk185800961
  • kk185800961
  • 2013年09月28日 19:31
  • 1544
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:质疑String的匹配算法
举报原因:
原因补充:

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