2023华为OD统一考试(A+B卷)题库清单-带答案(持续更新)or2023年华为OD真题机考题库大全-带答案(持续更新)
题目描述:
一群大雁往南飞,给定一个字符串记录地面上的游客听到的大雁叫声,请给出叫声最少由几只大雁发出。具体的
1.大雅发出的完整叫声为”quack“,因为有多只大雁同一时间嘎嘎作响,所以字符串中可能会混合多个”quack”
2.大雁会依次完整发出”quack”,即字符串中'q,u,a,c,k这5个字母按顺序完整存
在才能计数为一只大雁如果不完整或者没有按顺序则不予计数。
3.如果字符串不是由'q,u',a',c,k字符组合而成,或者没有找到一只大雁,请返回-1.
输入描述:
一个字符串,包含大雁quack的叫声。1<=字符串长度<=1000,字符串中的字符只有
q,u,a',c,k
输出描述
大雁的数量
用例:
输入->输出
quackquack--> 1
qaauucqckk--> -1
quacqkuac --> 1
qququaauqccauqkkcauqqkcauqqkcaaukccakkkck --> 5文章来源:https://www.toymoban.com/news/detail-621867.html
quackqquackuackqqqqquack --> 2文章来源地址https://www.toymoban.com/news/detail-621867.html
/**
思路:最小几只大雁在叫
1. 从头取开始遍历的完整的quack
2. 遍历字符串统计所有的这个quack中有几个q(t)放在list中
3. 在统计全部的字符串中判断能满足这t个q对应数量的quack最小值
4. 取list中值跟小于t的最小值比较
6. 返回t or n
*/
public class CountGeese {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String sound = sc.nextLine();
Character[] soundType = {'q','u','a','c','k'};
List<Character> record = new ArrayList<>(Arrays.asList(soundType));
int value = count(sound,record);
System.out.println(value);
}
//qququaauqccauqkkcauqqkcauqqkcaaukccakkkck quackqquackuackqqqqquack
public static int count(String sound, List<Character> record){
List<Integer> qList = new ArrayList<>();
int countq = 0;
int index = 0;
int len = record.size();
//统计满足条件的q值数量
for (int i = 0; i < sound.length(); i++){
if (sound.charAt(i) == 'q'){
countq++;
}
if (sound.charAt(i) == record.get(index)){
if (index == len -1){
qList.add(countq);
countq = 0;
index = 0;
continue;
}
index++;
}
}
if (qList.size() == 0){
return -1;
}
//统计下所有q u a c k的值
int q = 0;
int u = 0;
int a = 0;
int c = 0;
int k = 0;
for (int i = 0; i < sound.length(); i++) {
switch (sound.charAt(i)){
case 'q':
q++;
break;
case 'u':
u++;
break;
case 'a':
a++;
break;
case 'c':
c++;
break;
case 'k':
k++;
break;
}
}
//取 q u a c k最小值
int min = Math.min(Math.min(Math.min(q, u), Math.min(a, c)), k);
Collections.sort(qList,(m,n) -> n-m);
for (int i = 0; i < qList.size(); i++){
if (qList.get(i) <= min){
return (qList.get(i));
}
}
return min;
}
}
到了这里,关于华为OD机考真题--数大雁--带答案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!