华为OD机试E卷 - 数大雁 Java
题目描述
一群大雁往南飞,给定一个字符串记录地面上的游客听到的大雁叫声,请给出叫声最少由几只大雁发出。
具体的:
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’。
输出描述
大雁的数量
示例1
输入
quackquack
输出
1
说明
无
示例2
输入:
qaauucqcaa
输出:
-1
说明
无
示例3
输入:
quacqkuackquack
输出:
2
说明
无
示例4
输入:
qququaauqccauqkkcauqqkcauuqkcaaukccakkck
输出:
5
说明
无
示例5
输入:
quacqkuquacqkacuqkackuack
输出:
3
说明
无
Java
import java.util.Scanner;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
public class Quack {
public static void main(String[] args) {
// 创建Scanner对象用于读取输入
Scanner scanner = new Scanner(System.in);
// 读取输入的字符串
String chars = scanner.nextLine();
// 定义大雁叫声的字符串
String quack = "quack";
// 定义一个数组,用于存储每个字符的状态
int[] states = new int[quack.length()];
// 定义一个ArrayList,用于存储每只大雁的叫声数量
ArrayList<Integer> dp = new ArrayList<>();
// 初始化最大值为0
int max_ = 0;
// 遍历输入的字符串
for (int i = 0; i < chars.length(); i++) {
// 获取当前字符在"quack"中的索引
int index = quack.indexOf(chars.charAt(i));
// 如果索引为-1,表示输入的字符串包含
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
机试E卷D卷刷题日记 文章被收录于专栏
机试刷题记录