面试题 01.09. 字符串轮转 : 字符串哈希运用题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试题 01.09. 字符串轮转 : 字符串哈希运用题相关的知识,希望对你有一定的参考价值。
题目描述
这是 LeetCode 上的 面试题 01.09. 字符串轮转 ,难度为 简单。
Tag : 「字符串哈希」
字符串轮转。给定两个字符串 s1
和 s2
,请编写代码检查 s2
是否为 s1
旋转而成(比如,waterbottle
是 erbottlewat
旋转后的字符串)。
示例1:
输入:s1 = "waterbottle", s2 = "erbottlewat"
示例2:
输入:s1 = "aa", s2 = "aba"
提示:
- 字符串长度在
说明: 你能只调用一次检查子串的方法吗?
字符串哈希
若两字符串互为旋转,则「其一字符串」必然为「另一字符串拓展两倍长度后(循环子串)」的子串。
基于此,我们可以使用「字符串哈希」进行求解:先计算 s2
的字符串哈希值 t
,然后构造出 s1 + s1
的哈希数组和次方数组,在两数组中检查是否存在长度为 的连续子段的哈希值 cur
与 t
相等。
不了解字符串哈希的同学可以看前置 以上是关于面试题 01.09. 字符串轮转 : 字符串哈希运用题的主要内容,如果未能解决你的问题,请参考以下文章