用户甲写新文本存入字符串A中,用户乙去编辑字符串A并把保存后结果存入字符串B.
要求:程序能判别出字符串A与B的异同之处,增加的文字显绿色,删除的文字显红色.
请问:1.请求高人能给出这种算法.
     2.不想通过记录用户乙的操作过程来判断(这样的话我的数据库就不好设计了)

解决方案 »

  1.   

    3.实在不行才能考虑第2种方法,因为文本都在RichTextBox里实现,不知能否用上undo,redo的buffer.
    自己设计的也行.
      

  2.   

    因为是修改操作可以从头比较没有的字符就是删除了。
    abcde
      cdef
    ab是删除的
    f 是增加的。
      

  3.   

    fuchen_yan: 什么是vss功能? 真有那么难么,没有成熟一点的算法么?
      songhtao : 要判断的字符串大概都2,3百字.
     另外用户乙是记者编辑,不会修改太多的字.
      

  4.   

    设想一种情况:
      a:    abcde
      b:    abcdeabcde    若b:  aabbccddee  若b:abcabcdede
    你想要那些显示绿色?
      

  5.   

    这里有篇很好的文章,我以前就是看这个学会的 :)
    http://www.ics.uci.edu/~eppstein/161/960229.html
      

  6.   

    括号中绿
    1. b =  abcdeabcde 时 abcde(abcde)
    2. b =  aabbccddee 时 a(a)b(b)c(c)d(d)e(e)
    3. b =  abcabcdede 时 abc(ab)de(de)晕死了..呵呵
      

  7.   

    对于  a : abcde b:aabbccddee使用lcs算法得出的结果应当是添加 a
    不变 ab
    添加 bc
    不变 cd
    添加 cde
    如果 b:abcabcdede那么结果是
    添加 abc
    不变 abcde
    添加 de
      

  8.   

    tiaoci(我挑刺,我快乐) : 你说的这样的效果可以接受,如能达到就很好了 .
    但是你说的是光添加,删除的东西能判断出来么??
    正恶读LCS算法中.....E文看的稍慢点.
    另外你说的:
    使用lcs算法得出的结果应当是添加 a
    不变 ab
    添加 bc  
    不变 cd  ( 这里是不是少个e??? )
    添加 cde
      

  9.   

    哦,看漏了,应当这样a : abcde b:aabbccddee添加 a
    不变 ab
    添加 bc
    不变 cd
    添加 d
    不变 e
    添加 e
      

  10.   

    删除也是可以知道的,看完算法就清楚了当然实际应用时会使用bit array来做,但有了算法,剩余的都应当是小菜
      

  11.   

    如真能实现就太好了,那就是我想要的.LCS刚看的一知半解,等我会了就结帐,呵呵.
    特别感谢tiaoci(我挑刺,我快乐) ,有问题我再向你请教.能留QQ么?? 
    实际操作时是判断中英文混合, 用char array 行不.
      

  12.   

    啊.sorry ,你说的bit array 是建立匹配矩阵吧.
    希望内存能受的了,好几百字那.呵呵.
      

  13.   

    www.codeproject.com里面有源代码,快去找找,我前不久下载用过的.