我有这个任务:
让 x 是一些有限和固定字母表上的字符串(想想英文字母表)。给定一个整数 k,我们使用 x^k 来表示通过连接 k 个 x 副本获得的字符串。如果 x 是字符串 HELLO,则 x^3 是字符串 HELLOHELLOHELLO。x 的重复是某个整数 k 的 x^k 的前缀。因此,HELL 和 HELLOHELL 都是 HELLO 的重复。两个字符串 x 和 y 的交错是通过将 x 的重复与 y 的重复混洗获得的任何字符串。例如 HELwoLOHELLrldwOH 是 HELLO 和 world 的交错。描述一个将三个字符串 x、y、z 作为输入并确定 z 是否是 x 和 y 的交错的算法。
我只提出了一个具有指数复杂性的解决方案(我们有指向z
单词的指针,以及一种二叉树。在每个节点中,我都有可能的单词 x 和 y 的当前状态(一开始都是空白)。我正在处理 z,节点有一个/两个/没有子节点,具体取决于 z 中的下一个字符是否可以添加到 x 字、y 字或没有字。)我怎样才能比指数复杂度更好?