华为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卷刷题日记 文章被收录于专栏

机试刷题记录

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务