ホームページ >バックエンド開発 >C++ >指定された 2 つの文内の反復しない単語をすべて出力します。

指定された 2 つの文内の反復しない単語をすべて出力します。

王林
王林転載
2023-09-15 19:01:03716ブラウズ

指定された 2 つの文内の反復しない単語をすべて出力します。

このチュートリアルでは、指定された 2 つの文内で繰り返されない単語をすべて識別して出力します。繰り返されない単語とは、2 つの文の中で 1 回だけ出現する単語、つまり、別の文の中で繰り返し出現しない単語を指します。このタスクには、入力文を分析し、個々の単語を識別し、2 つの文を比較して 1 回だけ出現する単語を見つけることが含まれます。出力はこれらすべての単語のリストになります。このタスクは、ループ、配列、辞書の使用など、さまざまなプログラミング方法を通じて実行できます。

###方法###

ここでは、指定された 2 つの文内の反復しない単語をすべて出力する 2 つの方法を示します-

方法 1: 辞書を使用する

方法 2: コレクションを使用する

方法 1: 辞書を使用する

辞書を使用して、各単語が 2 つのフレーズに出現する回数を数えます。次に、辞書を調べて、一度だけ出現する単語をすべて出力します。 C の Dictionary 関数は、通常、指定された 2 つの文内のすべての一意の単語を出力するために使用されます。この方法では、辞書またはハッシュ テーブル データ構造を使用して、2 つのフレーズ内の各単語の頻度を保存します。その後、辞書を反復処理して、1 回だけ出現する用語を出力できます。

###文法###

これは、実際のコードを含まない構文です。C の辞書メソッドを使用して、指定された 2 つの文内の反復しない単語をすべて出力します -

単語の出現頻度を保存する辞書を宣言します

  • リーリー

  • 2 つの文を文字列として入力します
  • リーリー

  • 文を単語に分割して辞書に挿入します
  • リーリー

  • 辞書を調べて固有の単語を出力します
  • リーリー ###アルゴリズム###

    C では、これは辞書メソッドを使用して、指定された 2 つの文内の重複しない項目をすべて段階的に出力するトリックです -

ステップ 1

- 文を含む 2 つの文字列 s1 と s2 を作成します。

ステップ 2

- 文中の各単語の出現頻度を記録するために使用される空の順序なしマップ文字列 int> dict を宣言します。

ステップ3

-Cの文字列ストリームクラスを使用して、2つのフレーズを解析して単語を抽出します。

ステップ 4

- 抽出された各単語について、辞書に掲載されているかどうかを確認します。そうであれば、その頻度を 1 つ増やします。それ以外の場合は、頻度 1 で辞書に追加します。

ステップ 5

- 両方の文を処理した後、辞書を繰り返し、頻度 1 のすべての用語を表示します。これらは 2 つの文の中で繰り返されていない単語です。

ステップ 6

-このメソッドの時間計算量は O(n), です 例 1

の中国語訳は次のとおりです:

例 1 このコードは、順序なしマップを使用して、結合されたフレーズ内の各単語の頻度を保存します。次に、マップをループして、1 回だけ出現する各単語を非反復単語のベクトルに追加します。最後に、重複しない単語を公開します。この例は、2 つの文がユーザーによって入力されたのではなく、プログラムにハードコーディングされていることを意味します。

リーリー ###出力### リーリー

方法 2: コレクションを使用する

この戦略には、セットを使用して 2 つのフレーズに 1 回だけ出現する用語を検索することが含まれます。各フレーズの用語セットを構築し、これらのセットの共通部分を特定できます。最後に、交差部分を反復処理して、1 回だけ出現するすべての項目を出力できます。

コレクションは、さまざまな要素をソートされた順序で保持する連想コンテナです。両方のフレーズの用語をコレクションに挿入でき、重複するものは自動的に削除されます。

###文法### ###確かに!以下は、指定された 2 つの文内の反復しない単語をすべて出力するために Python で使用できる構文です。 -

2 つの文を文字列として定義します

リーリー

各文を単語のリストに分割します

    リーリー
  • これら 2 つの単語リストからセットを作成します
    リーリー
  • セットの共通部分から一意の単語を見つける
    リーリー
  • 一意の単語を印刷する
    リーリー ###アルゴリズム###
  • C の集計関数を使用して、指定された 2 つの文内の反復しない単語をすべて出力するには、以下の手順に従ってください -

  • ステップ 1
- 2 つの文を保存する 2 つの文字列変数を作成します。
  • ステップ 2

    - 文字列フロー ライブラリを使用して、各文を独立した単語に分割し、2 つの別々の配列に保存します。

ステップ 3

- 各文に 1 つずつ、合計 2 つのセットを作成して、一意の単語を保存します。

ステップ 4 - 各単語配列をループし、各単語を正しいセットに挿入します。

ステップ 5 - 各セットをループし、固有の単語を出力します。

例 2

の中国語訳は次のとおりです: 例 2

このコードでは、文字列ストリーム ライブラリを使用して各文を個別の単語に分割します。次に、uniqueWords1 と uniqueWords2 の 2 つのコレクションを使用して、各文の一意の単語を保存します。最後に、各セットをループして、重複しない単語を出力します。

#include <iostream>
#include <string>
#include <sstream>
#include <set>

using namespace std;

int main() {
   string sentence1 = "This is the first sentence.";
   string sentence2 = "This is the second sentence.";
   string word;
   stringstream ss1(sentence1);
   stringstream ss2(sentence2);
   set<string> uniqueWords1;
   set<string> uniqueWords2;

   while (ss1 >> word) {
      uniqueWords1.insert(word);
   }

   while (ss2 >> word) {
      uniqueWords2.insert(word);
   }

   cout << "Non-repeating words in sentence 1:" << endl;
   for (const auto& w : uniqueWords1) {
      if (uniqueWords2.find(w) == uniqueWords2.end()) {
         cout << w << " ";
      }
   }
   cout << endl;

   cout << "Non-repeating words in sentence 2:" << endl;
   for (const auto& w : uniqueWords2) {
      if (uniqueWords1.find(w) == uniqueWords1.end()) {
         cout << w << " ";
      }
   }
   cout << endl;

   return 0;
}

输出

Non-repeating words in sentence 1:
first 
Non-repeating words in sentence 2:
second

结论

总之,从两个提供的句子中打印所有非重复单词的任务是通过使用各种编程方法来实现的,例如将句子分解为单个单词,利用字典来量化每个单词的频率,以及过滤掉非重复单词。生成的非重复单词集合可以报告给控制台或保存在列表或数组中以供进一步使用。这项工作对于基本的编程文本操作和数据结构操作很有帮助。

以上が指定された 2 つの文内の反復しない単語をすべて出力します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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