从字符串中反转子字符串

时间:2015-05-30 18:48:21

标签: c string algorithm complexity-theory

我正在寻找更好的算法来解决问题。

问题:如果存在给定的子字符串,则检查给定的字符串并反转给定字符串中的所有子字符串。

示例:字符串:

  

罐头罐头可以罐头吗?

子串:

  

可以

输出:

  

nac nac a nac as nacner nac nac a nac

解决此问题的更好算法是什么?

2 个答案:

答案 0 :(得分:3)

您可以先使用Knuth-Morris-Pratt搜索这些子字符串,然后只需用相反的顺序替换它们。

当我在大学通过我的数据结构课程时,从time complexity的观点来看,这种算法具有非常好的性能。

答案 1 :(得分:0)

在Java中, 您可以使用HashMap将键存储为单词,将值存储为反向单词。

对于每个单词,检查它是否存在于hashmap中,如果是,则获取该值。 如果没有,则反转该单词并将其添加到散列图。

您可以使用StringBuilder类的反向方法来反转单词。