我正在寻找更好的算法来解决问题。
问题:如果存在给定的子字符串,则检查给定的字符串并反转给定字符串中的所有子字符串。
示例:字符串:
罐头罐头可以罐头吗?
子串:
可以
输出:
nac nac a nac as nacner nac nac a nac
解决此问题的更好算法是什么?
答案 0 :(得分:3)
您可以先使用Knuth-Morris-Pratt搜索这些子字符串,然后只需用相反的顺序替换它们。
当我在大学通过我的数据结构课程时,从time complexity的观点来看,这种算法具有非常好的性能。
答案 1 :(得分:0)
在Java中, 您可以使用HashMap将键存储为单词,将值存储为反向单词。
对于每个单词,检查它是否存在于hashmap中,如果是,则获取该值。 如果没有,则反转该单词并将其添加到散列图。
您可以使用StringBuilder类的反向方法来反转单词。