1945 年。轉換後字串的數字總和
難度:簡單
主題:字串,模擬
給你一個由小寫英文字母組成的字串 s 和一個整數 k。
首先,將 s 轉換為整數,方法是將每個字母替換為其在字母表中的位置(即,將'a' 替換為1,將'b' 替換為2 ,...,將'z' 替換為26)。然後,轉換整數,將其替換為其數字總和。總共重複變換操作k 次。
例如,如果 s = "zbax" 且 k = 2,則透過以下操作得到的整數將為 8:
-
轉換:「zbax」➝「(26)(2)(1)(24)」➝「262124」➝262124
-
變換 #1: 262124 ➝ 2 + 6 + 2 + 1 + 2 + 4 ➝ 17
-
變換 #2: 17 ➝ 1 + 7 ➝ 8
回傳執行上述操作後所得到的整數。
範例1:
-
輸入: s = "iiii", k = 1
-
輸出: 36
-
說明:操作如下:
- 轉換:「iiii」➝「(9)(9)(9)(9)」➝「9999」➝9999
- 變換 #1:9999 ➝ 9 + 9 + 9 + 9 ➝ 36
- 因此結果整數是 36。
範例2:
-
輸入: s = "leetcode", k = 2
-
輸出: 6
-
說明:操作如下:
- 轉換:「leetcode」➝「(12)(5)(5)(20)(3)(15)(4)(5)」➝「12552031545」➝12552031545
- 變換 #1:12552031545 ➝ 1 + 2 + 5 + 5 + 2 + 0 + 3 + 1 + 5 + 4 + 5 ➝ 33
- 變換 #2:33 ➝ 3 + 3 ➝ 6
- 因此結果整數是 6。
範例 3:
-
輸入: s = "zbax", k = 2
-
輸出: 8
約束:
提示:
- 首先,我們要注意,第一次變換後的值最多為 100 * 10,這個值並不多
- 第一個變換之後,我們可以透過暴力來完成其餘的變換
解:
我們可以將解決方案分為兩個主要步驟:
-
將字串 s 轉換為整數:
- 字串中的每個字元都會替換為字母表中對應的位置(例如,'a' -> 1、'b' -> 2、...、'z' -> 26)。
- 將所有這些數字連接起來形成一個大整數。
-
透過整數的數字相加 k 次來轉換整數:
- 對於每個變換,將目前數字的所有數字相加。
- 重複此轉換過程 k 次。
讓我們用 PHP 實作這個解:1945。轉換後字串的數字總和
<?php
function getLucky($s, $k) {
...
...
...
/**
* go to ./solution.php
*/
}
// Test cases
echo getLucky("iiii", 1) . "\n"; // Output: 36
echo getLucky("leetcode", 2) . "\n"; // Output: 6
echo getLucky("zbax", 2) . "\n"; // Output: 8
?>
解釋:
-
轉換字串:
- 我們循環遍歷字串 s 中的每個字符,並使用 ord($s[$i]) - ord('a') + 1 計算其對應的字母位置。
- 這些值連接起來形成一個代表數字的大字串 numStr。
-
轉換數字:
- 我們循環 k 次,每次對目前 numStr 的數字求和。
- 此求和運算的結果會作為字串儲存回 numStr 中,以允許進一步轉換。
- 經過 k 次變換,我們傳回最終的整數值。
測試用例:
-
k = 1 的“iiii”轉換為“9999”,總和為 36,由於 k=1,最終結果為 36。
-
k = 2 的“leetcode”轉換為“12552031545”,在第一次轉換中總和為 33,在第二次轉換中為 6,結果為 6。
-
k = 2 的“zbax”轉換為“262124”,在第一次轉換中總計為 17,在第二次轉換中總計為 8,結果為 8。
考慮到限制,該解決方案非常有效,並且在提供的限制內可以很好地工作。
聯絡連結
如果您發現本系列有幫助,請考慮在 GitHub 上給 存儲庫 一個星號或在您最喜歡的社交網絡上分享該帖子? 。您的支持對我來說意義重大!
如果您想要更多類似的有用內容,請隨時關注我:
以上是轉換後字串的數字總和的詳細內容。更多資訊請關注PHP中文網其他相關文章!