计算C ++中字母的出现次数

我们获得了作为文本流和单词的输入,任务是找出给定文本流中单词的字谜出现的次数。字谜是通过重新排列单词的字母而产生的,而单词最终是一个不同的单词或短语,就像语句“纽约时报”中的单词字谜一样,可以形成“猴子写”。

例如

输入:字符串string-:“ workitwrokoffowkr”,单词=“ work”   

输出:字符串中的字谜出现次数为:3

说明:“ work”一词的可能字谜是work,wrok,rowk,owkr等。在给定的字符串中,work的可用字谜是work,wrok和owkr,因此计数为3。

输入:字符串string-:“ expresshycool”一词=“ Zen”   

输出:字符串中的字谜出现次数为:0

说明:单词“ zen”的可能字谜为nez,ezn,enz,zne,nze,zen等。在给定的字符串中,单词“ zen”没有可用字谜,因此计数为0。

以下程序中使用的方法如下

  • 我们给了一个字符,string(stream)并将word(w)其传递给函数countAna(stream,w)进行进一步处理。

  • 在函数内部(countAna)初始化了一个计数标志

  • 从i = 0到i <=()-()启动一个FOR循环。stream.length()w.length()

  • 在函数(countAna)内调用函数rangeAna(w,stream.substring(i,i +()))传递单词和stream.substring(i,i +()),生成子串(长度等于单词) )。w.length()w.length()

  • 在函数rangaAna中,字符串将转换为字符数组并进行排序

  • (阵列。等于(C1,C2))然后检查是否所生成的子串是等于字和响应(真/假)被相应地发送。

  • countAna()如果响应为true,则将计数标记(位于内)加1。

  • 然后在该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

猜你喜欢