Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm số lần xuất hiện đảo ngữ trong C ++

Chúng tôi được cung cấp một đầu vào là một luồng văn bản và một từ, và nhiệm vụ là tìm ra số lần xuất hiện đảo chữ của từ trong luồng văn bản đã cho. Đảo ngữ được tạo ra bằng cách sắp xếp lại các chữ cái từ một từ mà kết thúc là một từ hoặc cụm từ khác như đảo ngữ của các từ trong một tuyên bố "New York Times" có thể được tạo thành "Monkeys write".

Ví dụ

Đầu vào :String string-:“workitwrokoffowkr” word =“work”

Đầu ra :Số lần xuất hiện đảo chữ trong chuỗi là:3

Giải thích :Các từ đảo ngữ có thể có cho từ “work” là work, wrok, rowk, owkr, v.v. Trong chuỗi đã cho, các từ đảo ngữ có sẵn cho work là work, wrok và owkr, do đó số lượng là 3.

Đầu vào :String string-:“expresshycool” word =“Zen”

Đầu ra :Số lần xuất hiện của đảo ngữ trong chuỗi là:0

Giải thích :Các từ đảo chữ cái có thể có cho từ “zen” là nez, ezn, enz, zne, nze, zen, v.v. Trong chuỗi đã cho không có sẵn các từ đảo ngữ cho từ “zen” do đó số đếm là 0.

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Chúng tôi được cung cấp một chuỗi ký tự (luồng) và từ (w) được chuyển vào hàm countAna (stream, w) để xử lý thêm.
  • Bên trong hàm ( countAna ) cờ đếm được khởi tạo
  • Bắt đầu vòng lặp FOR từ i =0 đến i <=(stream.length ()) - (w.length ()).
  • Bên trong hàm ( countAna ) gọi hàm Sắp xếpAna (w, stream.substring (i, i + (w.length ()))) chuyển từ và stream.substring (i, i + (w.length ())) tạo ra các chuỗi con (có độ dài bằng từ ) từ luồng.
  • Bên trong chức năng sắp xếpAna các chuỗi được chuyển đổi thành mảng ký tự và được sắp xếp
  • (Mảng. bằng (c1, c2)) sau đó kiểm tra xem chuỗi con được tạo có bằng từ hay không và phản hồi (đúng / sai) được gửi tương ứng.
  • Cờ đếm (bên trong countAna () ) sau đó sẽ tăng lên nếu câu trả lời là đúng.
  • Phản hồi sau đó được ghi lại trong phương thức main () và đầu ra được in.

Ví dụ

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));
   }
}

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Đầu ra

Count of occurrences of anagram in the string are: 3