📌  相关文章
📜  用于查询给定字符串在恒定时间内的旋转和第 K 个字符的 Python3 程序(1)

📅  最后修改于: 2023-12-03 15:40:54.486000             🧑  作者: Mango

查询旋转和第K个字符

本文介绍一个 Python3 程序,该程序可以实现在恒定时间内查询给定字符串的旋转和第 K 个字符。

程序思路
  1. 将输入的字符串拼接成两倍长度的新字符串 s + s
  2. 判断输入的字符串长度是否等于拼接后字符串长度的一半,如果不是,则说明输入字符串是旋转后的字符串,需要使用字符串查找函数 find() 找到旋转字符串在拼接字符串中的位置,再通过取模来计算出旋转的偏移量。
  3. 如果输入字符串长度等于拼接字符串长度的一半,则说明输入字符串是未旋转的字符串,直接通过 K 来找到对应的字符即可。
代码实现
def search_rotation(s: str, K: int) -> str:
    n = len(s)
    s += s
    if n < len(s) // 2:
        pos = s.find(s[:n])
        i = (K - 1 + pos) % n
        return s[i]
    else:
        return s[K - 1]
使用示例
s = "hello world"
assert search_rotation(s, 2) == 'e'
assert search_rotation(s, 8) == 'r'
assert search_rotation('orldhello w', 3) == 'r'
总结

本文介绍了一个查询字符串旋转和第 K 个字符的 Python3 程序,该程序的时间复杂度为 $O(1)$,不仅代码简单易懂,还具有一定的实用性。