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

Javaで部分文字列の出現を再帰的にカウントします


2つの文字列str_1とstr_2が与えられます。目標は、再帰的プロセスを使用して、文字列str1内の部分文字列str2の出現回数をカウントすることです。

再帰関数は、その定義内に独自の呼び出しがある関数です。

str1が「私が知っていることをあなたが知っていることを知っている」の場合str2=「知っている」

発生回数は− 3

例を挙げて理解しましょう。

入力

str1 = "TPisTPareTPamTP", str2 = "TP";

出力

Count of occurrences of a substring recursively are: 4

説明

The substring TP occurs 4 times in str1.

入力

str1 = "HiHOwAReyouHiHi" str2 = "Hi"

出力

Count of occurrences of a substring recursively are: 3

説明

The substring Hi occurs 3 times in str1.

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

このアプローチでは、Javaのcontains()メソッドを使用して、str1でstr2の出現を検索します。 str2がstr1に存在する場合はtrueを返します。 trueの場合、javaのreplaceFirst()メソッドを使用してstr1から最初のオカレンスを「」に置き換え、戻り値に1を追加して、カウントを増やします。

  • str1とstr2として2つの文字列を取ります。

  • 再帰メソッドsubsrting_rec(String str、String sub)は、文字列strとそのサブ文字列subを受け取り、str内のsubの発生数を返します。

  • str.contains(sub)がtrueであるかどうかを確認します。 (strにはsubがあります)

  • trueの場合、str.replaceFirst(sub、””)を使用して最初に出現するsubを“”に置き換えます。

  • これは、subsrting_rec(String str、String sub)への再帰呼び出し内で実行します。

  • すべての再帰の終わりに、すべての戻り値の合計がカウントされます。

  • 結果を印刷します。

public class recursive{
   public static void main(String args[]){
      String str1 = "TPisTPareTPamTP", str2 = "TP";
      System.out.println("Count of occurrences of a substring recursively are: "+subsrting_rec(str1, str2));
   }
   static int subsrting_rec(String str, String sub){
      if (str.contains(sub)){
         return 1 + subsrting_rec(str.replaceFirst(sub, ""), sub);
      }
      return 0;
   }
}

出力

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

Count of occurrences of a substring recursively are: 4

  1. Javaで数を数えるプログラムを実装するにはどうすればよいですか?

    プログラムはJLabelを使用します カウントラベルを保持するには、 JTextField 数値を保持するコンポーネントカウント 、 JButton 追加を作成するコンポーネント 、削除 およびリセット ボタン。追加ボタンをクリックすると、JTextFieldのカウントがインクリメントされます 投稿者 1 削除ボタンをクリックすると、カウントが「1」ずつ減らされます。 [リセット]ボタンをクリックすると、リセットされます 0へのカウント 。 例 import java.awt.*; import java.awt.event.*; import javax.swing.*; publ

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

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