Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 재귀 적으로 하위 문자열의 발생 횟수 계산


주어진 두 개의 문자열 str_1 및 str_2. 목표는 재귀 프로세스를 사용하여 문자열 str1에서 부분 문자열 str2의 발생 횟수를 계산하는 것입니다.

재귀 함수는 정의 내부에 자체 호출이 있는 함수입니다.

str1이 "나는 당신이 내가 알고 있다는 것을 알고 있다는 것을 알고 있습니다"인 경우 str2 ="know"

발생 횟수는 − 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로 가져옵니다.

  • 재귀 메서드 subsrting_rec(String str, String sub)는 문자열 str과 그 하위 문자열 sub를 가져와서 str에서 sub의 발생 횟수를 반환합니다.

  • str.contains(sub)가 true인지 확인하십시오. ( str 에는 하위가 있습니다 )

  • true이면 str.replaceFirst(sub,"")를 사용하여 sub의 첫 번째 항목을 ""로 바꿉니다.

  • subsrting_rec(String str, String sub)에 대한 재귀 호출 내에서 이 작업을 수행합니다.

  • 모든 재귀의 끝에서 모든 반환 값의 합은 count입니다.

  • 결과를 인쇄하십시오.

예시

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