使用 Python 查詢最長 Nice 子字串的程式
假設我們有一個字串 s。我們必須找到 s 的最長 Nice 子字串。對於一個字串 s,當字母表中的每個字母在 s 中都以大寫和小寫兩種形式出現時,它就被認為是 Nice 的。如果有多個這樣的子字串,則返回最早出現的子字串。
因此,如果輸入類似於 s = "ZbybBbz",則輸出將為 "bBb",因為它包含小寫和大寫 B。
為了解決這個問題,我們將遵循以下步驟:
cur_max:= -1
res:= 空字串
對於 i 從 0 到 s 的大小,執行以下操作
c := s[i]
upper := 一個新的集合
lower := 一個新的集合
如果 c 是小寫,則
將 c 新增到 lower 中
如果 c 是大寫,則
將 c 新增到 upper 中,但在之前將其轉換為小寫
對於 j 從 i+1 到 s 的大小,執行以下操作
c := s[j]
如果 c 是小寫,則
將 c 新增到 lower 中
如果 c 是大寫,則
將 c 新增到 upper 中,但在之前將其轉換為小寫
如果 upper 等於 lower,則
如果 j-i > cur_max,則
cur_max := j-i
res := s 從索引 i 到 j+1 的子字串
返回 res
讓我們看看以下實現以獲得更好的理解:
示例
def solve(s): cur_max= -1 res="" for i in range(len(s)): c = s[i] upper = set() lower = set() if c.islower(): lower.add(c) if c.isupper(): upper.add(c.lower()) for j in range(i+1,len(s)): c = s[j] if c.islower(): lower.add(c) if c.isupper(): upper.add(c.lower()) if upper == lower: if j-i>cur_max: cur_max = j-i res = s[i:j+1] return res s = "ZbybBbz" print(solve(s))
輸入
"ZbybBbz"
輸出
bBb
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP