C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++でアナグラムの出現をカウントする


テキストストリームと単語として入力が与えられます。タスクは、指定されたテキストストリーム内の単語のアナグラムの出現回数を見つけることです。アナグラムは、ステートメント内の単語のアナグラムのように、別の単語またはフレーズになる単語から文字を再配置することによって生成されます。「ニューヨークタイムズ」は「モンキーズライト」として形成できます。

入力 :文字列文字列-:“ workitwrokoffowkr” word =“ work”

出力 :文字列内のアナグラムの出現回数は次のとおりです:3

説明 :「work」という単語に使用できるアナグラムは、work、wrok、rowk、owkrなどです。指定された文字列では、workに使用できるアナグラムはwork、wrok、owkrであるため、カウントは3です。

入力 :文字列文字列-:“ expresshycool” word =“ Zen”

出力 :文字列内のアナグラムの出現回数は次のとおりです:0

説明 :「zen」という単語に使用できるアナグラムは、nez、ezn、enz、zne、nze、zenなどです。指定された文字列には「zen」という単語に使用できるアナグラムがないため、カウントは0です。

以下のプログラムで使用されているアプローチは次のとおりです

  • 関数countAnaで渡される文字列(stream)とword(w)が与えられます (stream、w)さらに処理します。
  • 関数内( countAna )カウントフラグが初期化されます
  • forループをi=0からi<=(stream.length())-(w.length())まで開始します。
  • 関数内( countAna )関数 ArrangeAnaを呼び出します (w、stream.substring(i、i +(w.length())))単語を渡し、stream.substring(i、i +(w.length()))は(単語と等しい長さの)部分文字列を生成します)ストリームから。
  • 関数内arrangeAna 文字列は文字配列に変換され、並べ替えられます
  • (配列。等しい (c1、c2))次に、生成された部分文字列が単語と等しいかどうかをチェックし、それに応じて応答(true / false)が送信されます。
  • カウントフラグ( countAna()内 )は、応答がtrueの場合に増分されます。
  • 次に、応答がmain()メソッドでキャプチャされ、出力が出力されます。

import java.io.*;
import java.util.*;

public class testClass {
   static boolean arrangeAna(String s1, String s2) {
      char[] c1 = s1.toCharArray();
      char[] c2 = s2.toCharArray();
      Arrays.sort(c1);
      Arrays.sort(c2);
      if (Arrays.equals(c1, c2)) {
         return true;
      } else {
         return false;
      }
   }
   static int countAna(String stream, String w) {
      int count = 0;
      for (int i = 0; i <= (stream.length()) - (w.length()); i++) {
         if (arrangeAna(w, stream.substring(i, i + (w.length())))) {
            count++;
         }
      }
      return count;
   }

   public static void main(String args[]) {
      Scanner scan = new Scanner(System.in);
      String stream = scan.next(); //workitwrokoffowkr
      String w = scan.next(); //work
      System.out.print(countAna(stream, w));
   }
}

上記のコードを実行すると、次の出力が生成されます-

出力

Count of occurrences of anagram in the string are: 3

  1. 文字列内の単語の出現をカウントするC#プログラム

    最初に文字列を設定します- string str = "Hello World! Hello!"; 次に、文字列で「Hello」という単語が出現していないか確認し、ループスルーします- while ((a = str1.IndexOf(pattern, a)) != -1) {    a += pattern.Length;    count++; } 例 次のコードを実行して、文字列内の単語の出現回数をカウントできます。 using System; class Program {    static voi

  2. Pythonで文字列内の文字の出現をカウントします

    文字列と文字が与えられます。特定の文字列で特定の文字が繰り返される回数を調べたいのです。 範囲と長さあり インデックスを使用してアクセスされる文字列に存在するすべての文字と文字を一致させるために、forループを設計します。 range and len関数は、文字列の左から右に移動するときにマッチングを実行する必要がある回数を決定するのに役立ちます。 例 Astr = "How do you do" char = 'o' # Given String and Character print("Given String:\n", Astr)