ホームページ  >  記事  >  バックエンド開発  >  指定された条件に従って次を中国語に翻訳します。指定された条件に従って文字を削除し、空の文字列のインデックスの合計を取得します。

指定された条件に従って次を中国語に翻訳します。指定された条件に従って文字を削除し、空の文字列のインデックスの合計を取得します。

WBOY
WBOY転載
2023-09-02 15:29:061324ブラウズ

指定された条件に従って次を中国語に翻訳します。指定された条件に従って文字を削除し、空の文字列のインデックスの合計を取得します。

空の文字列を取得するために削除される文字インデックスの合計など、文字列操作に関連する概念は、プログラミングの課題や競技会でよく使用されます。次に、削除された文字インデックスの合計を使用して結果が計算されます。

文字のインデックス合計を削除して空の文字列を取得することは、プログラミングのさまざまな困難や課題を解決するために使用できる文字列操作の実用的なアイデアです。

問題の処理

空の文字列を生成するために削除される文字インデックスの総数を見つけるには、まず問題文と指定された基準を理解する必要があります。

文字列 S が与えられた場合、目標は、文字列を空のままにして S から削除できる文字の合計数を決定することです。たとえば、S = "code" の場合、位置 0、4、5、および 6 の文字を削除して空の文字列を取得できます。これらの指数を合計すると、0 4 5 6 = 15 になります。

ただし、スタックの使用は、この問題を解決するための一般的な戦略です。文字列 S をループし、各反復で各文字を削除できるかどうかを判断できます。インデックスを削除できる場合は、スタックに追加できます。削除できない場合は、スタックの一番上のキャラクターを既存のキャラクターと一緒に削除できるかどうかを確認します。削除できる場合は削除し、そのインデックスを現在の文字のインデックスに追加します。このプロセスは、文字列内のすべての文字が処理されるまで繰り返すことができます。

次の疑似コードは、この戦略を示しています -

リーリー

この疑似コードでは、sum 変数と空のスタックは両方とも 0 に初期化されます。次に、for ループを使用して文字列 S を繰り返し処理します。各文字を確認して、一番上の文字と一緒に削除できるかどうかを確認します。 stack (スタックが空でない場合)。可能であれば、キャラクターはスタックから削除され、そのインデックスとゲーム内のキャラクターの合計が sum 変数に追加されます。この場合、インデックスをスタックに追加し、削除しようとします。次に、sum 変数を返します。

このメソッドの時間計算量と空間計算量は両方とも O(n) です。ここで、n は文字列 S の長さ、n は S から削除できる最大文字数です。

###文法###

指定された条件に基づいて空の文字列を作成することによって削除される文字インデックスの総数を決定するための C 構文は次のとおりです -

イラスト

    まず、ユーザーが入力した文字列を取得します。
  • n の開始値を文字列 str の長さに設定します。
  • 次に、cnt を 0 に初期化します。これにより、文字「U」の出現数がカウントされます。
  • sum の初期値を 0 に設定します。これには、削除された文字インデックスの合計数が格納されます。
  • その後、str をループして、以下に示すように各文字をチェックします。 -
    • 文字が「U」の場合、cnt を増加させ、合計を (n - i - 1) 2 * cnt だけ増やします。
    • 文字が「U」ではない場合、i 2 * cnt を加算して合計を増やします。
    最後に、sumの値を出力します。
NOTE

- この質問の詳細は明示されていないため、これらの条件が想定されます。 リーリー ###アルゴリズム### 定義された条件下で空の文字列を作成することによって削除された文字インデックスの総数をカウントするための C アルゴリズム -

ステップ 1
    - まず、文字列変数を定義し、ユーザー指定の文字列を入力します。
  • ステップ 2
  • - 文字列の文字を保持するスタックを作成します。
  • ステップ 3
  • - 文字列を 1 文字ずつループして入力します。
  • ステップ 4
  • - 現在の文字が空の場合は、それをスタックにプッシュします。
  • ステップ 5
  • - 現在の文字とスタックの先頭の文字が同じ場合は、スタックから先頭の文字をポップします。
  • ステップ 6
  • - 現在の文字がスタックの一番上の文字と異なる場合は、それをスタックにプッシュします。
  • ステップ 7
  • - ループ後のスタックには、消去できない文字だけが残ります。
  • ステップ 8
  • - スタック上にまだある文字のインデックスを追加します。
  • ステップ 9
  • - インデックスの総数を表示します。
  • 従うべき方法

  • 方法1

次の条件を使用して文字削除インデックスの合計を計算し、空の文字列を生成します -

この例では、文字列「abacbdc」が入力として使用されます。このコードは、2 つのインデックス i と j を使用して、文字列を最初から最後まで走査します。文字列から文字を削除する条件は次のとおりです。

s[i] と s[j] が等しい場合、両方のインデックスを文字列の中心に移動します。

s[i] が s[j] より小さい場合、インデックス j の文字を削除し、インデックスの合計をインデックス i だけ増やします。

  • s[i] が s[j] より大きい場合、インデックス i の文字を削除し、インデックス合計をインデックス j 1 だけ増やします。

  • すべての文字が削除された後、インデックスの合計をコンソールに報告します。

  • これは単なる例であり、問​​題の性質に応じて文字の削除の要件が変更される可能性があることに注意してください。

示例 1

#include <iostream>
#include <string>

using namespace std;

int main() {
   string s = "abacbdc";
   int sum = 0;
   int i = 0;
   int j = s.length() - 1;
   while (i < j) {
      if (s[i] == s[j]) {
         i++;
         j--;
      } else if (s[i] < s[j]) {
         sum += i + 1;
         i++;
         s.erase(j, 1);
         j--;
      } else {
         sum += j + 1;
         j--;
         s.erase(i, 1);
         i++;
      }
   }
   cout << "Sum of indices of characters removed: " << sum << endl;
   return 0;
}

输出

Sum of indices of characters removed: 6

方法2

str 字符串和字符是 sum_of_indices 函数的输入。然后,迭代字符串,确定每个字符是否等于 c。如果是这样,函数会递减循环索引以考虑删除的字符,并将字符的索引添加到运行总数中,然后使用擦除技术从字符串中删除字符。然后该函数返回已消除的字符索引的总数。

示例字符串 str 和字符 c 在 main 函数中定义,这两个输入用于调用 sum_of_indices 函数。总数作为结果打印到控制台。

示例 2

#include <iostream>
#include <string>
using namespace std;
int sum_of_indices(string str, char c) {
   int sum = 0;
   for (int i = 0; i < str.length(); i++) {
      if (str[i] == c) {
         sum += i;
         str.erase(i, 1);
         i--;
      }
   }
   return sum;
}
int main() {
   string str = "abcbcdc";
   char c = 'c';
   int sum = sum_of_indices(str, c);
   cout << "Sum of indices of characters removed to obtain empty string: " << sum << endl;
   return 0;
}

输出

Sum of indices of characters removed to obtain empty string: 9

结论

需要操作字符串及其索引来解决根据提供的条件计算消除的字符索引之和以获得空字符串的问题。为了解决这个问题,循环遍历字符串,如果两个连续字符相同,则在更新索引之前删除它们。一旦我们有了一个空字符串,我们就可以添加被删除的字符的索引以产生一个空字符串。

有许多解决方案需要解决,例如利用堆栈或队列来跟踪要删除的字符,或者使用递归来迭代地从字符串中删除字符。

以上が指定された条件に従って次を中国語に翻訳します。指定された条件に従って文字を削除し、空の文字列のインデックスの合計を取得します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。