华为OD机考真题--单词接龙--带答案

这篇具有很好参考价值的文章主要介绍了华为OD机考真题--单词接龙--带答案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

2023华为OD统一考试(A+B卷)题库清单-带答案(持续更新)or2023年华为OD真题机考题库大全-带答案(持续更新)

题目描述:

单词接龙的规则是:

用于接龙的单词首字母必须要前一个单词的尾字母相同;
当存在多个首字母相同的单词时,取长度最长的单词,如果长度也相等,则取字典序最小的单词;
已经参与接龙的单词不能重复使用。
现给定一组全部由小写字母组成单词数组,并指定其中的一个单词作为起始单词,进行单词接龙。

请输出最长的单词串,单词串是单词拼接而成,中间没有空格。

输入描述:

输入的第一行为一个非负整数,表示起始单词在数组中的索引K,0 <= K < N。
输入的第二行为一个非负整数,表示单词的个数N。
接下来的N行,分别表示单词数组中的单词。
输出描述:

输出一个字符串,表示最终拼接的单词串。
备注:

单词个数N的取值范围为[1, 20]
单个单词的长度的取值范围为[1, 30]
————————————————

示例

输入:

0
6
word
dd
da
dc
dword
d
输出:

worddwordda
说明:

先确定起始单词word,再接以d开头的且长度最长的单词dword,剩余以d开头且长度最长的有dd、da、dc,则取字典序最小的da,所以最后输出worddwordda。
输入:

4
6
word
dd
da
dc
dword
d
输出:

dwordda
说明:

先确定起始单词dword,剩余以d开头且长度最长的有dd、da、dc,则取字典序最小的da,所以最后输出dwordda。
 文章来源地址https://www.toymoban.com/news/detail-627363.html

public class WordRelay {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int beginIndex = Integer.parseInt(sc.nextLine());
        int wordNums = Integer.parseInt(sc.nextLine());
        String [] word = new String[wordNums];
        List<Word> wordInfo = new LinkedList<>();
        for (int i = 0; i < wordNums; i++){
            word[i] = sc.next();
            if (i != beginIndex){
                wordInfo.add(new Word(word[i].length(),word[i]));
            }
        }
        find(word,beginIndex,wordInfo);
    }


    /**
     * 给List<Word>排序,初始化准备
     * @param word
     * @param beginIndex
     * @param wordInfo
     */
    public static void find(String[] word, int beginIndex , List<Word> wordInfo ){
        Collections.sort(wordInfo, (o1, o2) -> {
            if (o1.length != o2.length){
                return o2.length - o1.length;
            }else {
                return o1.word.compareTo(o2.word);
            }
        });
        //起始值
        String beginWord = word[beginIndex];
        String endSingleWord = beginWord.substring(beginWord.length()-1,beginWord.length());
        StringBuffer sb = new StringBuffer();
        sb.append(beginWord);
        appendWord(wordInfo, endSingleWord, sb,true);
    }

    /**
     * 从大到小的长度顺序拼接
     * @param wordInfo
     * @param endSingleWord
     * @param sb
     * @param end
     */
    private static void appendWord(List<Word> wordInfo, String endSingleWord, StringBuffer sb,Boolean end) {
        while (end){
            end = false;
            for (int i = 0; i < wordInfo.size(); i++){
                if (endSingleWord.equals(String.valueOf(wordInfo.get(i).word.charAt(0)))){
                    sb.append(wordInfo.get(i).word);
                    endSingleWord = wordInfo.get(i).word.substring(wordInfo.get(i).word.length()-1,wordInfo.get(i).word.length());
                    //添加完移除
                    wordInfo.remove(i);
                    end = true;
                    break;
                }
            }
        }
        System.out.println(sb.toString());
    }


    @Data
    public static class Word{
        int length;
        String word;

        public Word(int length, String word) {
            this.length = length;
            this.word = word;
        }
    }
}

到了这里,关于华为OD机考真题--单词接龙--带答案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 华为OD机试(含B卷)真题2023 算法分类版,58道20个算法分类,如果距离机考时间不多了,就看这个吧,稳稳的

    很多小伙伴问我,华为OD机试算法题太多了,知识点繁杂,如何刷题更有效率呢? 我觉得可以按照“算法和数据结构”去刷,把华为OD机试涉及到的“算法和数据结构”列出来,一个算法刷10道题,那我岂不是无敌了? 首先,了解算法和数据结构有哪些知识点,在后面的刷题

    2024年02月14日
    浏览(36)
  • 华为OD机考--食堂供餐--带答案

    题目描述: 某公司员工食堂以盒饭方式供餐。为将员工取餐排队时间降低为0,食堂的供餐速度必须要足够快。现在需要根据以往员工取餐的统计信息,计算出一个刚好能达成排队时间为0的最低供餐速度。即,食堂在每个单位时间内必须至少做出多少份盒饭才能满足要求。

    2024年02月15日
    浏览(43)
  • 【华为OD机考 统一考试机试C卷】找单词(C++ Java JavaScript Python)

    2023年11月份,华为官方已经将 华为OD机考:OD统一考试(A卷 / B卷)切换到 OD统一考试(C卷)和 OD统一考试(D卷) 。根据考友反馈:目前抽到的试卷为B卷或C卷/D卷,其中C卷居多 ,按照之前的经验C卷D卷部分考题会复用A卷/B卷题,博主正积极从考过的同学收集C卷和D卷真题,

    2024年02月02日
    浏览(50)
  • 关于华为OD机考那些事(必刷题和部分真题概览)

    目录 一、背景概述 二、关于机考 1. 刷题链接 2. 题型介绍 3. 常见考点 4. 网站必刷题 5. 刷题小贴士 三、真题概览(持续补充) 本文旨在说明华为OD机考要点,收集机考真题,为后续参加考试的同学提供参考资料。如果您在阅读过程中有任何疑问欢迎留言。博主学艺不精,欢

    2024年02月03日
    浏览(38)
  • 【华为机考真题】区块链文件转储系统,JAVA 题解 | 华为OD机试考生(新抽中题)

    华为 od 2023 | 什么是华为 od,od 薪资待遇,od 机试题清单 华为 OD 机试真题大全,用 Python 解华为机试题 | 机试宝典 【华为 OD 机试】全流程解析+经验分享,题型分享,防作弊指南 华为 od 机试,独家整理 已参加机试人员的实战技巧 参加华为 od 机试,一定要注意不要完全背诵代码

    2024年02月08日
    浏览(37)
  • 华为OD真题---玩牌高手--带答案

    2023华为OD统一考试(A+B卷)题库清单-带答案(持续更新)or2023年华为OD真题机考题库大全-带答案(持续更新) 玩牌高手 给定一个长度为n的整型数组,表示一个选手在n轮内可选择的牌面分数。选手基于规则选牌,请计算所有轮结束后其可以获得的最高总分数。选择规则如下

    2024年02月13日
    浏览(61)
  • 华为OD真题--分月饼--带答案

    1. 华为OD机考题 + 答案 2023华为OD统一考试(A+B卷)题库清单-带答案(持续更新) 2023年华为OD真题机考题库大全-带答案(持续更新) 2. 面试题 一手真实java面试题:2023年各大公司java面试真题汇总--持续更新 3. 技术知识 java后端技术汇总 + 中间件 + 架构思想 题目描述: 公司分

    2024年02月12日
    浏览(40)
  • 华为OD真题--分苹果-带答案

    有A,B两个同学想要分苹果。A的想法是使用二进制进行,1 + 1相加不进一位,如(9 + 5 = 1001 +101 = 12)。B同学的想法是使用十进制进行,并且进一位。会输入两组数据,一组是苹果总数,一组分别是每个苹果的重量。如果让B同学在满足A同学的情况下获取到苹果的总重量且返回

    2024年02月15日
    浏览(39)
  • 华为OD真题--评选最差产品-带答案

    /** * A公司准备对他下面的N个产品评选最差奖,评选的方式是首先对每个产品进行评分,然后根据评分区间计算相邻几个产品中最差的产品。 * 评选的标准是依次找到从当前产品开始前M个产品中最差的产品,请给出最差产品的评分序列。 * * 输入描述: * 第一行,数字M,表示

    2024年02月16日
    浏览(79)
  • 华为OD真题--新学习选址--带答案

    2023华为OD统一考试(A+B卷)题库清单-带答案(持续更新)or2023年华为OD真题机考题库大全-带答案(持续更新) 为了解新学期学生暴涨的问题,小乐村要建立所新学校 考虑到学生上学安全问题,需要所有学生家到学校的距离最短. 假设学校和所有学生家都走在一条直线之上,请问

    2024年02月13日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包