2023華為OD統(tǒng)一考試(A+B卷)題庫清單-帶答案(持續(xù)更新)or2023年華為OD真題機(jī)考題庫大全-帶答案(持續(xù)更新)
題目描述:
一群大雁往南飛,給定一個(gè)字符串記錄地面上的游客聽到的大雁叫聲,請(qǐng)給出叫聲最少由幾只大雁發(fā)出。具體的
1.大雅發(fā)出的完整叫聲為”quack“,因?yàn)橛卸嘀淮笱阃粫r(shí)間嘎嘎作響,所以字符串中可能會(huì)混合多個(gè)”quack”
2.大雁會(huì)依次完整發(fā)出”quack”,即字符串中'q,u,a,c,k這5個(gè)字母按順序完整存
在才能計(jì)數(shù)為一只大雁如果不完整或者沒有按順序則不予計(jì)數(shù)。
3.如果字符串不是由'q,u',a',c,k字符組合而成,或者沒有找到一只大雁,請(qǐng)返回-1.
輸入描述:
一個(gè)字符串,包含大雁quack的叫聲。1<=字符串長度<=1000,字符串中的字符只有
q,u,a',c,k
輸出描述
大雁的數(shù)量
用例:
輸入->輸出
quackquack--> 1
qaauucqckk--> -1
quacqkuac --> 1
qququaauqccauqkkcauqqkcauqqkcaaukccakkkck --> 5文章來源:http://www.zghlxwxcb.cn/news/detail-621867.html
quackqquackuackqqqqquack --> 2文章來源地址http://www.zghlxwxcb.cn/news/detail-621867.html
/**
思路:最小幾只大雁在叫
1. 從頭取開始遍歷的完整的quack
2. 遍歷字符串統(tǒng)計(jì)所有的這個(gè)quack中有幾個(gè)q(t)放在list中
3. 在統(tǒng)計(jì)全部的字符串中判斷能滿足這t個(gè)q對(duì)應(yīng)數(shù)量的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();
//統(tǒng)計(jì)滿足條件的q值數(shù)量
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;
}
//統(tǒng)計(jì)下所有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;
}
}
到了這里,關(guān)于華為OD機(jī)考真題--數(shù)大雁--帶答案的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!