ホームページ >バックエンド開発 >C++ >単語数に応じて文字列を反転する

単語数に応じて文字列を反転する

WBOY
WBOY転載
2023-09-03 15:09:06971ブラウズ

単語数に応じて文字列を反転する

文字列操作は、テキスト データを効率的に処理および分析するのに役立つため、プログラミングにおいて不可欠なスキルです。C には豊富な文字列操作関数とオブジェクトのセットが用意されており、操作が容易になります。テキストデータ.

この記事では、C で単語数に応じて文字列を反転する方法について説明します。

###方法###

アプローチ 1

- 文字列ストリームとベクトルの使用

方法 2

- 部分文字列および文字列操作関数を使用する ###構文### C の String オブジェクト: std::string クラスは C 標準ライブラリの一部であり、さまざまな文字列操作関数を提供します。

文字列操作関数: C の一般的な文字列操作関数には、length()、substr()、find()、erase()、replace() などがあります。 リーリー

アプローチ 1:- 文字列ストリームとベクトルの使用

コードで採用されているこのアプローチには、stringstream オブジェクトを使用して入力文字列を単語のシーケンスに変換することが含まれます。その後、単語はストリームから 1 つずつ抽出され、ベクトルで表される文字列のコレクションに格納されます。

その後、アルゴリズム ライブラリの reverse 関数を使用して、単語のコレクションが反転されます。反転された単語は結合されて、最後の出力文字列を除く各単語の後にスペースが追加されて、最終的な出力文字列が形成されます。

###アルゴリズム###

######始める######

入力文字列を取得します。

入力文字列から文字列ストリームを作成します。
  • 単語を格納するために空のベクトルを初期化します。
  • 文字列ストリームの反復を通じて単語を抽出します。
  • 文字列ストリームから単語を抽出します。
  • 抽出した単語をベクトルにプッシュします。
  • 単語を含むベクトルを反転します。
  • 空の出力文字列を初期化します。
  • ベクトルを逆に走査して出力文字列を形成します。
  • 反転ベクトルの各単語を出力文字列に追加し、その後にスペースを追加します。
  • 出力文字列から最後のスペースを削除します。
  • 出力文字列を返します。
  • ######終わり######

    ###例###

    このコードは、指定された文字列内の単語の順序を反転する手順を具体化しています。これは、まず stringstream オブジェクトを使用して入力文字列を単語ベースのストリームに変換することによって実現されます。その後、単語が 1 つずつ抽出されます。その後、アルゴリズム ライブラリの reverse 関数を使用してベクトルを反転します。最後に、反転された単語が結合されて最終的な出力文字列が形成され、最後の単語を除く各単語の後にスペースが挿入されます。その後、最後のスペースが出力文字列から削除され、文字列ストリーム、ベクトル、アルゴリズム ライブラリなどの標準ライブラリの機能を最大限に活用する、コンパクトでわかりやすいソリューションがレンダリングされます。 リーリー
  • 出力
  • の中国語訳は次のとおりです:

    出力

    リーリー
  • 方法 2: 部分文字列および文字列操作関数を使用する
  • 方法 2 は、文字列内の単語の順序を逆にする別の解決策です。方法 1 のように文字列ストリームとベクトルを使用する代わりに、部分文字列と文字列操作関数を使用します。

  • このアプローチでは、入力文字列を個々の単語を表す部分文字列に手動で分割します。部分文字列は逆の順序で連結されて、最終的な出力文字列を形成します。
  • ###アルゴリズム###

    ######始める######

  • 入力文字列を取得します。

入力文字列内の単語の開始位置と終了位置を保存するために使用される 2 つの size_t 変数 start と end を初期化します。

開始位置を 0 に初期化します。

入力文字列内の最初のスペースの位置を見つけて、それを end 変数に格納します。

空の出力文字列を初期化します。

  • 入力文字列を反復処理し、部分文字列を使用して単語を抽出します。

  • 開始位置から終了位置までの部分文字列を抽出します。

  • 抽出された部分文字列を出力文字列の前に連結し、その後にスペースを入れます。

  • 開始位置を終了位置の後の位置に更新します。

  • 入力文字列内の新しい開始位置から次のスペースを検索し、終了位置を更新します。

  • ループが終了したら、

  • を使用します。 ######終わり###

Example

The code is a solution for reversing the order of words in a given string. It does this by dividing the input string into substrings using the find function and concatenating these substrings in reverse order to form the output string. The last space character is then removed from the output string using the pop_back function. This approach is more manual and low-level compared to Approach 1 and requires a deeper understanding of string manipulation. The code takes a given input string, divides it into substrings, reverses the order of these substrings, and returns the final output string.

#include <iostream>
#include <string>

std::string reverseStringByWords(const std::string& input) {
   size_t start = 0;
   size_t end = input.find(' ');
   std::string output;

   while (end != std::string::npos) {
      output = input.substr(start, end - start) + " " + output;
      start = end + 1;
      end = input.find(' ', start);
   }
    
   output = input.substr(start) + " " + output;
   output.pop_back(); // Remove the last space
   return output;
}

int main() {
   std::string input = "Hello, how are you?";
   std::string output = reverseStringByWords(input);
   std::cout << "Input: " << input << std::endl;
   std::cout << "Output: " << output << std::endl;

   return 0;
}

Output

的中文翻译为:

输出

Input: Hello, how are you?
Output: you? are how Hello,

结论

在编程中字符串操作的重要性:掌握字符串操作技术对于任何程序员来说都是至关重要的,因为文本数据在软件开发中无处不在。理解各种字符串操作的方法可以帮助开发人员编写更高效、可维护和健壮的代码。

以上が単語数に応じて文字列を反転するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

関連記事

続きを見る