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 であり、大した値ではないことに注意してください。
- 最初の変換後は、残りの変換を総当たりで行うことができます
解決策:
解決策は 2 つの主なステップに分類できます:
-
文字列 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 になり、2 番目の変換では合計が 6 になり、結果は 6 になります。
-
k = 2 の「zbax」は「262124」に変換され、最初の変換では合計が 17、2 番目の変換では 8 になり、結果は 8 になります。
このソリューションは、制約を考慮すると効率的であり、指定された制限内で適切に機能します。
連絡先リンク
このシリーズが役立つと思われた場合は、GitHub で リポジトリ にスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味を持ちます!
このような役立つコンテンツがさらに必要な場合は、お気軽にフォローしてください:
以上が変換後の文字列の桁の合計の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。