从字符串中反转子字符串

Reverse a substring from a string

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

问题:检查给定字符串是否存在给定子字符串并反转给定字符串中的所有子字符串。

示例:字符串:

Can you can a can as a canner can can a can

子字符串:

can

输出:

nac you nac a nac as a nacner nac nac a nac

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

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

由于我已经通过了大学的数据结构课程,从 time complexity 的角度来看,该算法具有非常好的性能。

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

对于每个单词,检查它是否存在于hashmap中,如果存在,则取值。 如果不是,则反转单词并将其添加到哈希图中。

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