檢查Python字串中所有字元是否具有相同的頻率,允許一個字元頻率不同
假設我們有一個小寫字串s,我們必須檢查是否可以透過刪除最多一個字元將其轉換為有效字串。這裡的有效字串是指一個字串str,其中str中所有唯一字元的每個字元的頻率都相同。
因此,如果輸入類似於s = "xyyzx",則輸出為True,因為我們可以刪除z,則字串將變為"xyyx",其中x和y的出現次數相同。
為了解決這個問題,我們將遵循以下步驟:
- size := 26
- occurrence := 一個大小為26的陣列。這儲存了s中每個字元的頻率
- occr1 := 0
- occr1_cnt := 0
- 對於i從0到size - 1,執行:
- 如果occurrence[i]不為0,則:
- occr1 := occurrence[i]
- occr1_cnt := 1
- 退出迴圈
- 如果occurrence[i]不為0,則:
- occr2 := 0
- occr2_cnt := 0
- 對於j從i+1到size - 1,執行:
- 如果occurrence[j]不為0,則:
- 如果occurrence[j]等於occr1,則:
- occr1_cnt := occr1_cnt + 1
- 否則:
- occr2_cnt := 1
- occr := occurrence[j]
- 退出迴圈
- 如果occurrence[j]等於occr1,則:
- 如果occurrence[j]不為0,則:
- 對於k從j+1到size - 1,執行:
- 如果occurrence[k]不為0,則:
- 如果occurrence[k]等於occr1,則:
- occr1_cnt := occr1_cnt + 1
- 如果occurrence[k]等於occr2,則:
- occr2_cnt := occr2_cnt + 1
- 否則:
- 返回False
- 如果occurrence[k]等於occr1,則:
- 如果occr1_cnt > 1且occr2_cnt > 1,則:
- 返回False
- 如果occurrence[k]不為0,則:
- 返回True
讓我們看看下面的實現,以便更好地理解:
示例
size = 26
def solve(str):
occurrence = [0]*size
for i in range(len(str)): occurrence[ord(str[i])-ord('a')] += 1
occr1 = 0
occr1_cnt = 0
for i in range(size):
if (occurrence[i] != 0):
occr1 = occurrence[i]
occr1_cnt = 1
break
occr2 = 0
occr2_cnt = 0
for j in range(i+1,size):
if (occurrence[j] != 0):
if (occurrence[j] == occr1):
occr1_cnt += 1
else:
occr2_cnt = 1
occr = occurrence[j]
break
for k in range(j+1,size):
if occurrence[k] != 0:
if (occurrence[k] == occr1):
occr1_cnt += 1
if (occurrence[k] == occr2):
occr2_cnt += 1
else:
return False
if occr1_cnt > 1 and occr2_cnt > 1:
return False
return True
s = "xyyzx"
print(solve(s))輸入
"xyyzx"
輸出
True
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP