数大雁(暴力解法)

        
/**
 * 题目描述:
 *
 * 一群大雁往南飞,给定一个字符串记录地面上的游客听到的大雁叫声,请给出叫声最少由几只大雁发出。具体的
 *
 * 1.大雅发出的完整叫声为”quack“,因为有多只大雁同一时间嘎嘎作响,所以字符串中可能会混合多个”quack”
 *
 * 2.大雁会依次完整发出”quack”,即字符串中'q,u,a,c,k这5个字母按顺序完整存
 *
 * 在才能计数为一只大雁如果不完整或者没有按顺序则不予计数。
 *
 * 3.如果字符串不是由'q,u',a',c,k字符组合而成,或者没有找到一只大雁,请返回-1.
 */

用例:

输入->输出

quackquack--> 1

qaauucqckk--> -1

quacqkuac --> 1

qququaauqccauqkkcauqqkcauqqkcaaukccakkkck --> 5

quackqquackuackqqqqquack --> 2

package niuke;

/**
 * @Author tzccc
 * @Date 2023/8/9
 */

public class dayan {
    public static void main(String[] args) {
        String str = "qaauucqckk";
        node q = new node('q');
        node u = new node('u');
        node a = new node('a');
        node c = new node('c');
        node k = new node('k');
        q.next = u;
        u.next = a;
        a.next = c;
        c.next = k;
        k.next = q;
        System.out.println(count(str,q) == 0 ? -1 : count(str,q));
    }

    static int count(String str,node root){
        if (str.length()<5){
            return 0;
        }
        node q = root;
        boolean flag = false;
        int len = 0;
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == q.flag){
                len++;
                q = q.next;
            }
            if (len==5){
                flag = true;
                i = i - 4;
                len = 0;
                for (int j = 0; j < 5; j++) {
                    str = str.replaceFirst(String.valueOf(q.flag),"");
                    q=q.next;
                }
            }
        }
        if (!flag){
            return 0;
        }
        return count(str,root) + (flag ? 1 : 0);
    }
    static class node{
        public char flag;
        public node next;
        public node(char flag){
            this.flag = flag;
        }
    }

}

暴力解法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
华为OD机试 大雁是华为公司招聘流程中的其中一项测试环节,用于考察应聘者在编程方面的能力。该笔试主要考察的是计算机基础知识和编程实战能力。 华为OD机试题目通常由一系列算法编程题组成,其中涵盖了据结构和算法字符串操作、动态规划、图论、递归、搜索等各个方面的知识点。考生需要根据题目要求,自行设计算法并编写相应的代码,来解决问题。 这一环节的目的是为了考察应聘者在编程方面的能力,包括对算法的理解和实现能力、代码质量和效率等方面的评估。编程能力在今天的软件工程领域中十分重要,能够有效地解决实际问题,提高代码的可读性和可维护性,是评估一个程序员水平的重要指标。 参加华为OD机试大雁,需要具备扎实的计算机基础知识,熟练掌握编程语言和常用的据结构和算法,并具备理解和分析问题的能力。在备战该笔试的过程中,应聘者应该注重对算法的学习和理解,并进行大量的编程实践,深入理解各类算法的原理与应用场景。在解答算法题时,可以运用递归、分治、贪心、动态规划等常用思想,将问题拆解为更小的子问题,从而更好地解决复杂的算法问题。 华为OD机试大雁一个对程序员编程能力的一种考察方式,参加者需要通过编写代码解决题目,展示自己的编程实力。准备过程中,应聘者应该注意提高自己的算法能力,并进行足够的练习,积累编程经验,从而顺利通过华为OD机试大雁

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值