Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 아나그램의 발생 횟수 계산

<시간/>

텍스트 스트림과 단어로 입력이 주어지고 주어진 텍스트 스트림에서 해당 단어의 아나그램 발생 횟수를 찾는 것이 작업입니다. 아나그램은 "New York Times"가 "Monkeys write"로 형성될 수 있는 문장에서 단어의 아나그램과 같이 다른 단어 또는 구로 끝나는 단어의 문자를 재배열하여 생성됩니다.

입력 :문자열 문자열-:"workitwrokoffowkr" 단어 ="작업"

출력 :문자열에서 아나그램의 발생 횟수는 다음과 같습니다. 3

설명 :"work"라는 단어에 사용할 수 있는 아나그램은 work, wrok, rowk, owkr 등입니다. 주어진 문자열에서 work에 사용 가능한 아나그램은 work, wrok 및 owkr이므로 개수는 3입니다.

입력 :문자열 문자열-:"expresshycool" 단어 ="젠"

출력 :문자열에서 아나그램 발생 횟수:0

설명 :"zen"이라는 단어에 사용할 수 있는 아나그램은 nez, ezn, enz, zne, nze, zen 등입니다. 주어진 문자열에서 "zen"이라는 단어에 사용할 수 있는 아나그램이 없으므로 개수는 0입니다.

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

  • countAna 함수에 전달된 문자열(스트림)과 단어(w)가 제공됩니다. (stream,w) 추가 처리를 위해.
  • 함수 내부(countAna ) 카운트 플래그가 초기화됩니다.
  • i=0에서 i <=(stream.length()) - (w.length())까지 FOR 루프를 시작합니다.
  • 함수 내부(countAna ) arrangeAna 함수 호출 (w, stream.substring(i, i + (w.length()))) 단어를 전달하고 부분 문자열을 생성하는 stream.substring(i, i + (w.length())) (단어와 동일한 길이의) ) 스트림에서.
  • arrangeAna 함수 내부 문자열이 문자 배열로 변환되고 정렬됩니다.
  • (배열.같음 (c1, c2)) 그런 다음 생성된 부분 문자열이 단어와 동일한지 확인하고 그에 따라 응답(true/false)이 전송됩니다.
  • 카운트 플래그(countAna() 내부 ) 응답이 참이면 증가합니다.
  • 응답은 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