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

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

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

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

問題の処理

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

文字列 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で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
C:それは死にかけていますか、それとも単に進化していますか?C:それは死にかけていますか、それとも単に進化していますか?Apr 24, 2025 am 12:13 AM

c isnotdying; it'sevolving.1)c relelevantdueToitsversitileSileSixivisityinperformance-criticalApplications.2)thelanguageSlikeModulesandCoroutoUtoimveUsablive.3)despiteChallen

C現代の世界:アプリケーションと産業C現代の世界:アプリケーションと産業Apr 23, 2025 am 12:10 AM

Cは、現代世界で広く使用され、重要です。 1)ゲーム開発において、Cは、非現実的や統一など、その高性能と多型に広く使用されています。 2)金融取引システムでは、Cの低レイテンシと高スループットが最初の選択となり、高周波取引とリアルタイムのデータ分析に適しています。

C XMLライブラリ:オプションの比較と対照C XMLライブラリ:オプションの比較と対照Apr 22, 2025 am 12:05 AM

C:tinyxml-2、pugixml、xerces-c、およびrapidxmlには、一般的に使用される4つのXMLライブラリがあります。 1.TinyXML-2は、リソースが限られている環境、軽量ではあるが機能が限られていることに適しています。 2。PUGIXMLは高速で、複雑なXML構造に適したXPathクエリをサポートしています。 3.Xerces-Cは強力で、DOMとSAXの解像度をサポートし、複雑な処理に適しています。 4。RapidXMLはパフォーマンスと分割に非常に高速に焦点を当てていますが、XPathクエリをサポートしていません。

CおよびXML:関係とサポートの調査CおよびXML:関係とサポートの調査Apr 21, 2025 am 12:02 AM

Cは、サードパーティライブラリ(TinyXML、PUGIXML、XERCES-Cなど)を介してXMLと相互作用します。 1)ライブラリを使用してXMLファイルを解析し、それらをC処理可能なデータ構造に変換します。 2)XMLを生成するときは、Cデータ構造をXML形式に変換します。 3)実際のアプリケーションでは、XMLが構成ファイルとデータ交換に使用されることがよくあり、開発効率を向上させます。

C#対C:重要な違​​いと類似点を理解するC#対C:重要な違​​いと類似点を理解するApr 20, 2025 am 12:03 AM

C#とCの主な違いは、構文、パフォーマンス、アプリケーションシナリオです。 1)C#構文はより簡潔で、ガベージコレクションをサポートし、.NETフレームワーク開発に適しています。 2)Cはパフォーマンスが高く、手動メモリ管理が必要であり、システムプログラミングとゲーム開発でよく使用されます。

C#対C:歴史、進化、将来の見通しC#対C:歴史、進化、将来の見通しApr 19, 2025 am 12:07 AM

C#とCの歴史と進化はユニークであり、将来の見通しも異なります。 1.Cは、1983年にBjarnestrostrupによって発明され、オブジェクト指向のプログラミングをC言語に導入しました。その進化プロセスには、C 11の自動キーワードとラムダ式の導入など、複数の標準化が含まれます。C20概念とコルーチンの導入、将来のパフォーマンスとシステムレベルのプログラミングに焦点を当てます。 2.C#は2000年にMicrosoftによってリリースされました。CとJavaの利点を組み合わせて、その進化はシンプルさと生産性に焦点を当てています。たとえば、C#2.0はジェネリックを導入し、C#5.0は非同期プログラミングを導入しました。これは、将来の開発者の生産性とクラウドコンピューティングに焦点を当てます。

C#対C:学習曲線と開発者エクスペリエンスC#対C:学習曲線と開発者エクスペリエンスApr 18, 2025 am 12:13 AM

C#とCおよび開発者の経験の学習曲線には大きな違いがあります。 1)C#の学習曲線は比較的フラットであり、迅速な開発およびエンタープライズレベルのアプリケーションに適しています。 2)Cの学習曲線は急勾配であり、高性能および低レベルの制御シナリオに適しています。

C#対C:オブジェクト指向のプログラミングと機能C#対C:オブジェクト指向のプログラミングと機能Apr 17, 2025 am 12:02 AM

オブジェクト指向プログラミング(OOP)のC#とCの実装と機能には大きな違いがあります。 1)C#のクラス定義と構文はより簡潔であり、LINQなどの高度な機能をサポートします。 2)Cは、システムプログラミングと高性能のニーズに適した、より細かい粒状制御を提供します。どちらにも独自の利点があり、選択は特定のアプリケーションシナリオに基づいている必要があります。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター