华为OD机试E卷 - 英文输入法(100分)

英文输入法单词联想功能

一、问题描述

主管期望实现英文输入法单词联想功能。依据用户输入的单词前缀,从已输入的英文语句中联想出用户想输入的单词,按字典序输出联想到的单词序列,如果联想不到,则输出用户输入的单词前缀。

注意事项

  1. 英文单词联想时,区分大小写。
  2. 缩略形式如“don’t”,判定为两个单词,“don”和“t”。
  3. 输出的单词序列,不能有重复单词,且只能是英文单词,不能有标点符号。

二、输入描述

输入为两行:

  1. 首行输入一段由英文单词 word 和标点符号组成的语句 str。
  2. 接下来一行为一个英文单词前缀 pre。

约束条件:

  • 0 < word.length ≤ 20。
  • 0 < str.length ≤ 1000。
  • 0 < pre ≤ 20。

三、输出描述

输出符合要求的单词序列或单词前缀,存在多个时,单词之间以单个空格分割。

四、示例

示例1

输入

I love you
He

输出:He 说明:从用户已输入英文语句“I love you”中提炼出“I”、“love”、“you”三个单词,接下来用户输入“He”,从已输入信息中无法联想到任何符合要求的单词,因此输出用户输入的单词前缀。

示例2

输入

The furthest distance in the world, Is not between life and death, But when I stand in front of you, Yet you don't know that I love you.
f

输出:front furthest 说明:从用户已输入英文语句中提炼出的单词,符合“f”作为前缀的有“furthest”和“front”,按字典序排序并在单词间添加空格后输出,结果为“front furthest”。



        function solution(input) {
            const [str, pre] = input.split('\n')
            if(!pre?.length) return ''
            const wordList = str.split('\'').reduce((total, cur)=> {
                // const s = cur.replace(/^[a-zA-Z ]/g, '')
                const words = cur.replace(/[^a-zA-Z\s]/g, '').split(' ')
                for (const w of words) {
                    if(!total.includes(w)) total.push(w)
                }

                return total
            }, [])
            const res = wordList.filter(f=> f.substring(0, pre.length) === pre)
            console.log(res , '--------------', str);
            return res?.length ? res.sort((a, b)=> a.localeCompare(b)).join(' ') : pre
        }
        
        function main() {
            // 示例1
            console.log(solution("I love you\nHe") === "He");
            
            // 示例2
            console.log(solution("The furthest distance in the world, Is not between life and death, But when I stand in front of you, Yet you don't know that I love you.\nf") === "front furthest");
            
            // 示例3
            console.log(solution("Hello world\nH") === "Hello");
            
            // 示例4:包含标点符号和缩略形式
            console.log(solution("I can't believe it's not butter!\nb") === "believe butter");
            
            // 示例5:只有cherry符合
            console.log(solution("apple banana cherry date\nc") === "cherry");

            // 示例6:空字符串
            console.log(solution("\n") === "");

            // 示例7:前缀为空字符串
            console.log(solution("apple banana cherry date\n") === "");

            // 示例8:前缀为大写字母
            console.log(solution("Apple Banana Cherry Date\nC") === "Cherry");

            // 示例9:前缀为小写字母,但单词中有大写字母
            console.log(solution("Apple Banana Cherry Date\nc") === "c");

            // 示例10:前缀为多个字母,且有多个匹配
            console.log(solution("apple banana cherry date\ncher") === "cherry");

            // 示例11:前缀为多个字母,且有多个匹配,按字典序排序
            console.log(solution("apple banana cherry date\na") === "apple");

            // 示例12:前缀为多个字母,且有多个匹配,按字典序排序
            console.log(solution("apple banana cherry date\nb") === "banana");

            // 示例13:前缀为多个字母,且有多个匹配,按字典序排序
            console.log(solution("apple banana cherry date\nd") === "date");

            // 示例14:前缀为多个字母,且有多个匹配,按字典序排序
            console.log(solution("apple banana cherry date\nch") === "cherry");

            // 示例15:前缀为多个字母,且有多个匹配,按字典序排序
            console.log(solution("apple banana cherry date\ndat") === "date");
        }
        
        main();
#华为OD机试E卷##华为od##华为od机试题库##华为OD机试真题##算法真题#
【华为OD机试】真题E卷 文章被收录于专栏

重要:2024年8月-2025年2月考的都是OD统一考试(E卷),题库已经整理好了,命中率95%以上。

全部评论
点赞 回复 分享
发布于 02-25 17:29 四川

相关推荐

来,说点可能被同行“骂”的大实话。🙊当初接数字马力Offer时,朋友都说:“蚂蚁的“内包”公司?你想清楚啊!”但入职快一年后的今天,我反而对他有了不一样的看法!🔹&nbsp;是偏见?还是信息差!之前没入职之前外面都在说什么岗位低人一等这类。实际上:这种情况不可至否,不能保证每个团队都是其乐融融。但我在的部门以及我了解的周边同事都还是十分好相处的~和蚂蚁师兄师姐之间也经常开一些小玩笑。总之:身份是蚂蚁公司给的,地位是自己挣的(一个傲娇女孩的自述)。🔹&nbsp;待遇?玩的就是真实!试用期工资全额发!六点下班跑得快(早9晚6或者早10晚7,动态打卡),公积金顶格交。别听那些画饼的,到手的钱和下班的时间才是真的(都是牛马何必难为牛马)。🔹&nbsp;能不能学到技术?来了就“后悔”!我们拥有权限直通蚂蚁知识库,技术栈多到学不完。说“学不到东西”的人,来了可能后悔——后悔来晚了(哈哈哈哈,可以不学但是不能没有)!💥&nbsp;内推地址:https://app.mokahr.com/su/ueoyhg❗我的内推码:NTA6Nvs走我的内推,可以直达业务部门,面试流程更快速,进度可查!今天新放HC,之前挂过也能再战!秋招已经正式开始啦~机会就摆在这,敢不敢来试一试呢?(和我一样,做个勇敢的女孩)
下午吃泡馍:数字马力的薪资一般哇,5年经验的java/测试就给人一万出头,而且刚入职第三天就让人出差,而且是出半年
帮你内推|数字马力 校招
点赞 评论 收藏
分享
评论
1
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务