高分求解字符串比较的问题——200分! (200分)

H

Haofei

Unregistered / Unconfirmed
GUEST, unregistred user!
两个由英文句子组成的字符串S和D,其中D为目标串,拿S与D比较,要求:

1、两个串按英语单词进行比较,忽略单词间多余的空格,且单词区分大小写!
例:
D:='Good Morning!' S:='Good Morning! '
则 S=D 成立!

2、若串S掉了n个单词,则在相应掉词的位置插入'{n}'。
例:
D:='Convenient to wineries, hiking trails, State Parks and Sugar Loaf Observatory. Award winning income producing vineyard.'
S:=Convenient to wineries, hiking trails, State Loaf Observatory. Award winning producing vineyard.'
则结果S应为:
'Convenient to wineries, hiking trails, State {3} Loaf Observatory. Award winning {1} producing vineyard.'

3、若S中错了一个单词,则将错误的单词用括号‘()’括起来。
例:D:='Convenient to wineries, hiking trails, State Parks and Sugar Loaf Observatory. Award winning income producing vineyard.'
S:='Convenient to wineries, hiking trail, State Parks and Sugar Loaf Observatory. Award win income producing vineyard.'
则结果S应为:
'Convenient to wineries, hiking (trail), State Parks and Sugar Loaf Observatory. Award (win) income producing vineyard.'

4、若S中多了单词,则将多余的单词用[]括起来!
例:D:='Located in private mountain community of Yosemite Lakes Park.'
S:='Located in the private mountain community of Yosemite Lakes Park.'
则:S应为:
‘Located in [the] private mountain community of Yosemite Lakes Park.’

5、标点符号的错误处理与上基本相同(将一个标点视为一个单词),处理时将正确答案结出。
例: D:='Good Morning!'
S:='Good Morning.'
则:结果S应为 'Good Morning!(.)' 应为‘!’,而不是'.'。
例: D:='wineries, hiking trails, State'
S:='wineries hiking trails State'
则结果S应为:' wineries,{} hiking trails,{} State'
例:D:='wineries hiking trails, State'
S:='wineries, hiking trails, State'
则结果为:'wineries[,] hiking trails, State'

请结出处理的原代码,分不够再加!!!!!
 
我觉着只要把空格吃掉后一个个字符比较就因该能达到了,耐心些,自己试一下也许就行了
 
在比较的时候设立两个指针分别定位两个字符串
1.比较简单 if (ptr1[0] = ' ') and (ptr[1] = ' ') then Inc(ptr1) 同样对ptr2 (没有做优化)
其他的比较麻烦 而且写起来很麻烦 虽然不是很难
思路 参考TCP 协议的 滑动窗口机制
1.因为是基于单词的比较 所以千万不要基于字符比较 非优化的代码 设立两个动态数组,把两个句子全部拆为单词(空格闭掉,)
2.然后利用滑动窗口机制比较单词 相同时继续往下滑动 不同时 首先考察是否是错误单词(标点) 就是说跳过几个单词 如果后边连续相同 那么就视为错误单词.否则就是缺少单词
定准一个串D 移动另一个串S 看是否是缺了 如果没找到 那么换位定位S,看D是否缺了
如果两者都失败了 那么 定位D并且跳过1个单词,在比较是否缺了... 如果跳过n个单词都不能判断是缺失 那么就是严重错误 没办法继续比较下去了
(缺失其实也是一种错误,找到不同点之后关键是分别定位并跳过若干个单词比较以找到新的同步点 初期先不要考虑太细到底是什么错误 只要能够在失步后重新找到了理想中的同步点,那么你的工作就完成了60% 剩下 35%进行优化 5%进行你的各种错误的具体诊定 输出结果字符串)
具体的细节 可以拿FC来设定具体的试验情况
 
人工智能?比较罗嗦。
换我的话,不如委托出去,让专业公司去头痛吧。 :)
 
先把多余一个空格的连续空格删掉,然后用动态规划比较
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
819
SUNSTONE的Delphi笔记
S
回复
7
查看
164
唐朝笨蛋
顶部