当前位置: 首页 > news >正文

LeetCode 面试题 16.20. T9键盘

文章目录

  • 一、题目
  • 二、C# 题解

一、题目

  在老式手机上,用户通过数字键盘输入,手机将提供与这些数字相匹配的单词列表。每个数字映射到0至4个字母。给定一个数字序列,实现一个算法来返回匹配单词的列表。你会得到一张含有有效单词的列表。映射如下图所示:

示例 1:

输入: num = “8733”, words = [“tree”, “used”]
输出: [“tree”, “used”]

示例 2:

输入: num = “2”, words = [“a”, “b”, “c”, “d”]
输出: [“a”, “b”, “c”]

提示:

  • num.length <= 1000
  • words.length <= 500
  • words[i].length == num.length
  • num 中不会出现 0, 1 这两个数字

  点击此处跳转题目。

二、C# 题解

  题目还好,一个一个匹配就是了。用队列存储中间满足匹配的单词,同时使用 Match 函数判断匹配,而不是建立 Map 判断映射关系,这样会快一点。

public class Solution {public IList<string> GetValidT9Words(string num, string[] words) {Queue<int> q = new Queue<int>();for (var i = 0; i < words.Length; i++) // 将第一个字母匹配的单词进入队列if (Match(num[0], words[i][0]))q.Enqueue(i);for (var i = 1; i < num.Length; i++) { // 在已匹配的单词里面循环匹配int cnt = q.Count;while (cnt-- > 0) {int wi = q.Dequeue();if (Match(num[i], words[wi][i])) q.Enqueue(wi);}}return q.Select(i => words[i]).ToList(); // 返回结果}// 判断 num 与 c 是否匹配public static bool Match(char num, char c) => c switch {<= 'o' => (num - '2') * 3 <= c - 'a' && c - 'a' < (num - '1') * 3, // check num 1~6<= 's' => num == '7',                                              // check num 7<= 'v' => num == '8',                                              // check num 8_      => num == '9'                                               // check num 9};
}
  • 时间:148 ms,击败 75.00% 使用 C# 的用户
  • 内存:46.18 MB,击败 75.00% 使用 C# 的用户
http://www.lryc.cn/news/225887.html

相关文章:

  • systemctl enable docker.service报错“Failed to execute operation: Bad message“
  • 向量的范数、矩阵的范数
  • C# OpenCvSharp 玉米粒计数
  • 前端缓存机制——强缓存、弱缓存、启发式缓存
  • 对称密钥加密与非对称密钥加密:原理与应用
  • 商品小类管理实现B
  • Unity--视觉组件(Raw Image,Mask)||Unity--视觉组件(Text,Image)
  • 在Node.js中,什么是事件发射器(EventEmitter)?
  • STM32——NVIC中断优先级管理分析
  • YOLOV5----修改损失函数-SimAM
  • MongoDB单实例安装(windows)
  • Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException:
  • 安卓RadioButton设置图片大小
  • 电脑怎么录制视频,录制的视频怎么剪辑?
  • 外接式网络隔离变压器/网络隔离滤波器/网口变压器/脉冲变压器/网络隔离变压器模块
  • AI:83-基于深度学习的手势识别与实时控制
  • MySQL---存储过程
  • 宠物社区系统宠物领养小程序,宠物救助小程序系统多少钱?
  • d3.js
  • okhttp关于header修改
  • pytorch代码实现注意力机制之Flatten Attention
  • 激光雷达和人工智能
  • 【算法练习Day44】最长递增子序列最长连续递增序列最长重复子数组
  • STM32H743XX/STM32H563XX芯片烧录一次后,再次上电无法烧录
  • 21. 合并两个有序链表 --力扣 --JAVA
  • Linux 基本语句_10_进程
  • 矩阵起源加入 OpenCloudOS 操作系统开源社区,完成技术兼容互认证
  • 3D物理模拟和视觉特效软件SideFX Houdini mac中文介绍
  • GPT-4.0网页平台-ChatYY
  • mysql,redis导入导出数据库数据