请教一个算法的问题 ( 积分: 25 )

  • 主题发起人 主题发起人 bryantd
  • 开始时间 开始时间
B

bryantd

Unregistered / Unconfirmed
GUEST, unregistred user!
有一些字符串,它们中间有一些注释,比如:It's <Delphibbs<Yeah>> Windows<Thanks> XP,其中的<Delphibbs<Yeah>>、<Thanks>就是注释,可以看出,注释可以是嵌套的。我想删除这些注释,用的办法是:扫描这句话,发现了“<”就它的位置进栈,遇到“>”就将它的位置出栈,然后删除中间的字符。
但是遇到了字符串本身就有“<”或“>”,而它们又不是注释的时候,比如:It's a special<Thank you> character '>'这样做就明显会造成UnderFlow(下溢)了,那位能帮我写个好一点的算法??谢谢了!!
 
有一些字符串,它们中间有一些注释,比如:It's <Delphibbs<Yeah>> Windows<Thanks> XP,其中的<Delphibbs<Yeah>>、<Thanks>就是注释,可以看出,注释可以是嵌套的。我想删除这些注释,用的办法是:扫描这句话,发现了“<”就它的位置进栈,遇到“>”就将它的位置出栈,然后删除中间的字符。
但是遇到了字符串本身就有“<”或“>”,而它们又不是注释的时候,比如:It's a special<Thank you> character '>'这样做就明显会造成UnderFlow(下溢)了,那位能帮我写个好一点的算法??谢谢了!!
 
一个问题问的莫名其妙,还居然拆成两份问两次<<Delphibbs<Yeah>>这是什么呀,自己写的都不对<Delphibbs<Yeah>>
 
我写错了,改了,你再看看。
 
先写出你要求的正则表示试,然后写个词法分析自动机,这是比较简单的办法,详细请看有关编译原理或自动机的书
 
我靠!用不着那么复杂吧!我懂得编译原理,好像不用那么高深吧!
 
你说的这种字符串本身就是有二义性的
必须学C那样使用转义字符"//"
 
复杂,注解中也有可能用个‘>’字符,你能处理正确?
你的例子上不会溢出,只不过把不是注解的删了。
你还得看句子的完整性才能分出注解来。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
589
import
I
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部