ホームページ  >  記事  >  バックエンド開発  >  変換後の文字列の桁の合計

変換後の文字列の桁の合計

王林
王林オリジナル
2024-09-04 06:41:011078ブラウズ

Sum of Digits of String After Convert

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

制約:

  • 1
  • 1
  • s は英小文字で構成されます。

ヒント:

  1. まず、最初の変換後の値は最大 100 * 10 であり、大した値ではないことに注意してください。
  2. 最初の変換後は、残りの変換を総当たりで行うことができます

解決策:

解決策は 2 つの主なステップに分類できます:

  1. 文字列 s を整数に変換します:

    • 文字列内の各文字は、アルファベットの対応する位置に置き換えられます (例: 'a' -> 1、'b' -> 2、...、'z' -> 26)。
    • これらの数値をすべて連結して大きな整数を形成します。
  2. 整数の桁を 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
?>

説明:

  1. 文字列を変換します:

    • 文字列 s 内の各文字をループし、ord($s[$i]) - ord('a') + 1 を使用して対応するアルファベットの位置を計算します。
    • これらの値は連結されて、数値を表す大きな文字列 numStr を形成します。
  2. 数値を変換します:

    • 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 で リポジトリ にスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味を持ちます!

このような役立つコンテンツがさらに必要な場合は、お気軽にフォローしてください:

  • LinkedIn
  • GitHub

以上が変換後の文字列の桁の合計の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。