快速对比查找两个字符串的第一个不同位置
                   和 最后一个不同的位置我现在的方法是逐个对比:效率很低
for i:=1 to length[s1] do
  if s1[i]<>s2[2] then 
  begin 
     result:=i
     break;
  end;
你的答案中也可以用PCHAR;最好不要类似循环对比的方法.谢谢了

解决方案 »

  1.   

    搜索KMP算法,对于没有排序的数据,不能使用二分法查找,或者你说的不是二分查找的方法。
      

  2.   

    嵌入汇编  repz scasb
      

  3.   

    KMP算法只适合在极为巨大的内存数据中搜索一个特定串, 如果是小数据量的话它并不高效, 因为它在搜索前先要初始化一块256字节的内存块并先遍历整个子串填信息到这256字节中, 然后再在原串中进行搜索. 可想而知对程序中大部分的常见的字符串搜索操作来说这么做要浪费多少.其实在delphi 5 中的strcomp, strlcomp, stricomp, strlicomp等函数已经对搜索做了一定的优化. 它是按4字节来进行比较的(rep cmpsd), 最后不足4字节的才单字节进行比较. 不知道为什么到d7中改成了rep cmpsb了. 不过两者都有一端恶心的代码, 就是先遍历字符串一次以搜索#0字符.
      

  4.   


    算法太复杂有没有必要!我的想法是 1 有没有对比发现第一个不同点的API函数2 类似二分法的办法. 
    (如果前面一半相等的话,则循环的次数会减少一半
    ru)
      

  5.   

    to :回复人: ahjoe(强哥)   repz scasb ;有没有对应的API函数啊  
     汇编我不懂啊