ACM编程 数大雁【Java】

题目描述:
一群大雁往南飞,给定一个字符串记录地面上的游客听到的大雁叫声,请给出叫声最少由
几只大雁发出。具体的:
1. 大雁发出的完整叫声为 "quack" ,因为有多只大雁同一时间嘎嘎作响,所以字符串中可能
会混合多个 "quack"
2. 大雁会依次完整发出 "quack" ,即字符串中‘ q , u , a , c , k ’ 这 5
字母按顺序完整存在才能计数为一只大雁。如果不完整或者没有按顺序则不予计数。
3. 如果字符串不是由‘ q , u , a , c , k ’字符组合而成,或者没有找到一
只大雁,请返回 -1
输入描述:
一个字符串,包含大雁 quack 的叫声。 1 <= 字符串长度 <= 10000
字符串中的字符只有 'q', 'u', 'a', 'c', 'k'
输出描述:
大雁的数量
public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String sound = sc.nextLine();
        int value = count(sound);
        System.out.println(value);
    }

    /**
     * 计算
     * @param str
     * @return
     */
    public static Integer count(String str){
        String[] strs = new String[str.length()];
        int n = 0;
        int count = 0;
        for (Character ch:str.toCharArray()) {
            if(ch == 'q'){
                strs[n] = "q";
                n++;
            }
            if(ch == 'u'){
                for (int i=0;i<strs.length;i++){
                    if("q".equals(strs[i])){
                        strs[i] = "qu";
                        break;
                    }
                }
            }
            if(ch == 'a'){
                for (int i=0;i<strs.length;i++){
                    if("qu".equals(strs[i])){
                        strs[i] = "qua";
                        break;
                    }
                }
            }
            if(ch == 'c'){
                for (int i=0;i<strs.length;i++){
                    if("qua".equals(strs[i])){
                        strs[i] = "quac";
                        break;
                    }
                }
            }
            if(ch == 'k'){
                for (int i=0;i<strs.length;i++){
                    if("quac".equals(strs[i])){
                        strs[i] = "quack";
                        count++;
                        break;
                    }
                }
            }
        }
        return count;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值