计算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
以上是 计算C ++中字母的出现次数 的全部内容, 来源链接: utcz.com/z/314287.html