String 有没有一种更快的方法可以将字符串从字典中拆分成单词

String 有没有一种更快的方法可以将字符串从字典中拆分成单词,string,hash,split,dynamic-programming,String,Hash,Split,Dynamic Programming,给定一个字符串s和一个单词数组a,使用a中的单词拆分s,以便保留最少的字符而不与任何单词匹配。 因此,给定s='aabbac'和a={'aabb',c',aab',bac'}我希望s被拆分成aabbac而不是aabb因为最后一个选项给了我一个额外的字符。 有没有比O(| s |*| a |)更快的动态规划和散列解决方案?在我看来,最佳处理包括从左到右扫描s,使用trie跟踪a中的匹配字,将部分解决方案保留在向量或类似内容中,并指示它们当前是否正在部分匹配trie的某些部分,或正在等待开始新的匹配

给定一个字符串s和一个单词数组a,使用a中的单词拆分s,以便保留最少的字符而不与任何单词匹配。
因此,给定
s='aabbac'
a={'aabb',c',aab',bac'}
我希望s被拆分成aabbac而不是aabb因为最后一个选项给了我一个额外的字符。

有没有比O(| s |*| a |)更快的动态规划和散列解决方案?

在我看来,最佳处理包括从左到右扫描s,使用trie跟踪a中的匹配字,将部分解决方案保留在向量或类似内容中,并指示它们当前是否正在部分匹配trie的某些部分,或正在等待开始新的匹配,以及迄今为止匹配的字符的累积计数。当找到替代匹配/终止时,您必须展开向量,并且您可以使用(相等的)最高累积计数将所有不匹配的项“压缩”为任意选择。我看不出散列有任何用处——这意味着比trie慢得多——提取和测试候选词时,不清楚是否已经“在”部分匹配中