Python程式:檢查一個字串是否可以透過順時針移位字元轉換為另一個字串


假設我們有兩個字串 p 和 q,還有一個數字 r,我們需要檢查 p 是否可以透過最多 r 次順時針移位字元轉換為 q。例如,“c”可以透過 2 次順時針移位轉換為“e”。

因此,如果輸入類似於 p = "abc",q = "ccc",r = 3,則輸出將為 True,因為我們可以透過使用 2 次順時針移位將“a”轉換為“c”,然後透過使用 1 次順時針移位將“b”轉換為“c”,總共 3 次移位。

為了解決這個問題,我們將遵循以下步驟:

  • 如果 a 的大小與 b 的大小不同,則
    • 返回 False
  • 如果 k 等於 0 且 a 不等於 b,則
    • 返回 False
  • su:= 0
  • 對於範圍從 0 到 a 的大小,執行以下操作:
    • v := b[i] 的 ASCII 值 - a[i] 的 ASCII 值
    • 如果 v>=0,則
      • su := su + v
    • 否則,
      • su := su + v + 26
    • 如果 su > k,則
      • 返回 False
  • 返回 True

讓我們看看以下實現以獲得更好的理解:

示例

 線上演示

class Solution:
   def solve(self, a, b, k):
      if len(a) != len(b):
         return False
      if k == 0 and a != b:
         return False
         su=0
         for i in range(len(a)):
            v = ord(b[i])- ord(a[i])
            if v>=0:
               su+=v
            else:
               su+=v+26
            if su>k:
               return False
         return True
ob = Solution()
print(ob.solve("abc", "ccc", 3))

輸入

"abc", "ccc", 3

輸出

True

更新於: 2020年10月5日

361 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.