首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java字符串搜寻思想(String)

2014-01-05 
Java字符串搜索思想(String)while (i min && source[i] ! strLastChar) {i--}?这段代码是在源字符串

Java字符串搜索思想(String)
while (i >= min && source[i] != strLastChar) { i--; }

?这段代码是在源字符串找到和子串最后一个字符相等的字符,把他的索引存入变量i(从尾部开始查找)

?

如果索引i小余min,意味着已经不在上面规定的查找范围之内了,直接返回-1;

如果索引i合法,那么确定源字符串的查找范围(起点j=i-1,终点start=起点-子串长度+1)【源码中终点的变量是start,作者觉得这是查找的终点,请注意区分】

确定子串的查找起点k=子串最后一个字符索引-1

用源字符串的索引j处的字符和子串索引k处的字符比较,并且j和k各自减1:

如果字符相等,则继续执行上面的比较,直到索引j递减到j>start(索引j超出了查找的终点start),则跳出循环继续往下执行;

如果字符不相等,则程序跳转到锚点startSearchForLastChar处,按照上面的逻辑继续执行;

?

如果if (source[j--] != target[k--])的比对一直相等,并且把while (j > start)循环执行完了,意味着在源字符串找到了子串(只需要找到第一个就可以了,当然是从末尾开始找的),程序返回子串的索引。

?

对于很长的字符串查找的优化,推荐一篇文章:?KMP子字符串查找算法分析与实现

?

全文完。

?

?

?

?

热点排行