LeetCode第500题 - 键盘行

题目

给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。
示例:

输入: [“Hello”, “Alaska”, “Dad”, “Peace”]
输出: [“Alaska”, “Dad”]

解答

class Solution {public String[] findWords(String[] words) {char[][] keyboard = {{'1', '1'}// 第一行,大写字母,{'Q', '1'},{'W', '1'},{'E', '1'},{'R', '1'},{'T', '1'},{'Y', '1'},{'U', '1'},{'I', '1'},{'O', '1'},{'P', '1'}// 第一行,小写字母,{'q', '1'},{'w', '1'},{'e', '1'},{'r', '1'},{'t', '1'},{'y', '1'},{'u', '1'},{'i', '1'},{'o', '1'},{'p', '1'}// 第二行,大写字母,{'A', '2'},{'S', '2'},{'D', '2'},{'F', '2'},{'G', '2'},{'H', '2'},{'J', '2'},{'K', '2'},{'L', '2'}// 第二行,小写字母,{'a', '2'},{'s', '2'},{'d', '2'},{'f', '2'},{'g', '2'},{'h', '2'},{'j', '2'},{'k', '2'},{'l', '2'}// 第三行,大写字母,{'Z', '3'},{'X', '3'},{'C', '3'},{'V', '3'},{'B', '3'},{'N', '3'},{'M', '3'}// 第三行,小写字母,{'z', '3'},{'x', '3'},{'c', '3'},{'v', '3'},{'b', '3'},{'n', '3'},{'m', '3'}};StringBuilder sb = new StringBuilder();for (int i = 0; i < words.length; ++i) {String word = words[i];if (word.isEmpty()) {continue;}int length = word.length();int level = 0;int lastLevel = 0;boolean found = false;for (int j = 0; j < length; ++j) {char c = word.charAt(j);for (int k = 0; k < keyboard.length; ++k) {if (keyboard[k][0] == c) {level = keyboard[k][1];break;}}if (j == 0) {lastLevel = level;}else if (lastLevel != level){found = true;break;}}if (found) {continue;}sb.append(word).append(",");}if (sb.length() == 0) {return new String[]{};}String out = sb.deleteCharAt(sb.length() - 1).toString();return out.split(",");}
}

要点
题目自身不困难,准备字母和键盘的映射关系,花了点时间。
不太适应在网页上直接输入代码,所以还是按照平常的工作习惯,在eclipse里输入代码,同时写好用例,用例通过后,再提交,对通过率非常有帮助。

准备的用例,如下

	@Testpublic void test1() {String[] words = {"Hello", "Alaska", "Dad", "Peace"}; String[] values = new L500().findWords(words);assertEquals("Alaska", values[0]);assertEquals("Dad", values[1]);}@Testpublic void test2() {String[] words = {"Hello"}; String[] values = new L500().findWords(words);assertEquals(0, values.length);}@Testpublic void test3() {String[] words = {"Alaska"}; String[] values = new L500().findWords(words);assertEquals("Alaska", values[0]);}@Testpublic void test4() {String[] words = {"Hello", "", "Dad", "Peace"}; String[] values = new L500().findWords(words);assertEquals(1, values.length);assertEquals("Dad", values[0]);}@Testpublic void test5() {String[] words = {"Hello", "    ", "Dad", "Peace"}; String[] values = new L500().findWords(words);assertEquals(1, values.length);assertEquals("Dad", values[0]);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/651941.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络-编制与调制(基带信号 基带传输 宽度信号 宽度传输 编码 调制 )

文章目录 基带信号与宽带信号编码与调制数字数据编码为数字信号数字数据调制为模拟信号模拟数据编码为数字信号模拟数据调制为模拟信号小结 基带信号与宽带信号 信道上传输的信号除了可以分为数字信号和模拟信号&#xff0c;也可以分为基带信号和宽带信号&#xff0c;只是分类…

【每日一题】最大合金数

文章目录 Tag题目来源解题思路方法一&#xff1a;二分枚举答案 写在最后 Tag 【二分枚举答案】【数组】【2024-01-27】 题目来源 2861. 最大合金数 解题思路 方法一&#xff1a;二分枚举答案 思路 如果我们可以制造 x 块合金&#xff0c;那么一定也可以制造 x-1 块合金。于…

【Spring Boot 3】【@Scheduled】动态修改定时任务时间

【Spring Boot 3】【@Scheduled】动态修改定时任务时间 背景介绍开发环境开发步骤及源码工程目录结构总结背景 软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习…

Hadoop-MapReduce-源码跟读-客户端篇

一、源码下载 下面是hadoop官方源码下载地址&#xff0c;我下载的是hadoop-3.2.4&#xff0c;那就一起来看下吧 Index of /dist/hadoop/core 二、从WordCount进入源码 用idea将源码加载进来后&#xff0c;找到org.apache.hadoop.examples.WordCount类&#xff08;快捷方法&…

支持下一代网络IpV6的串口服务器,IpV6串口485接口转网口

和IPv4比较&#xff0c;IPv6有两个极具吸引力的特点&#xff1a;一个是IPv6采用的128位地址格式&#xff0c;而IPv4采用32位的地址格式&#xff0c;因此IPv6使地址空间增大了296&#xff1b;另一个是IPv6物联网数据业务具有更强的支持能力&#xff0c;成为未来物联网的重要协议…

Kafka消息流转的挑战与对策:消息丢失与重复消费问题

消息丢失和重复消费时分布式系统重的常见问题&#xff0c;如果处理不好会对业务造成很大的影响。比如用户下单是通过消息队列处理的&#xff0c;对于用户的订单来说&#xff0c;消息丢失会造成用户下单丢失&#xff0c;影响售卖&#xff0c;如果重复消费&#xff0c;可能会生成…

Ps:创建基于饱和度的蒙版

能够区分图像上哪些区域的饱和度高&#xff0c;哪些区域的饱和度低&#xff0c;在调色过程中是相当有用的。 比如&#xff0c;使得饱和度高的区域更加饱和&#xff0c;可增加图像色彩反差&#xff0c;让画面更引人注目。 或者&#xff0c;使得饱和度区域趋于饱和&#xff0c;让…

技术书评和笔记【01】脑机接口-电路与系统 【2020版】

前言: 荷兰作者,Amir Zjajo博士,毕业于荷兰代尔夫特理工大学,方向 面向移动健康的低功耗混合型号电路与系统,以及,面向认知的神经形态电路。 ,脑机接口 - 电路与系统一书,系统介绍了,脑机接口电路与系统的实现技术,尤其,提到了量产和设计的问题,难能可贵,摘录如…

JVM篇----第九篇

系列文章目录 文章目录 系列文章目录前言一、分代收集算法二、新生代与复制算法三、老年代与标记复制算法前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 一、分代…

MySQL-删除重复数据

在实际应用中&#xff0c;遇到一个这样的问题&#xff0c;MySQL中存储的数据为资讯类数据&#xff0c;在页面展示时会出现多个平台的新闻报导相同的内容&#xff0c;导致页面会出现重复数据。因为数据是每天定期更新&#xff0c;所以最快捷有效的方式是在更新完数据后增加一个去…

3、创建特性(Creating Features)

使用Pandas转换特性以适合您的模型。 文章目录 1、简介2、数学变换3、计数4、构建和分解特征5、分组转换1、简介 一旦你确定了一组有潜力的特性,就可以开始开发它们了。在这节课中,你将学习如何在Pandas中进行一些常见的转换。如果你对Pandas不熟练, 请参考《从零开始的Pand…

YOLOv8融合改进 更换检测头同时改进C2f模块

一、Detect_DyHead检测头和C2f-EMSC,C2f-EMSCP模块 详细介绍和代码在往期的博客里: Detect_DyHead: (YOLOv8改进检测头Detect为Detect_Dyhead-CSDN博客) C2f-EMSC和C2f-EMSCP: (YOLOv8改进之多尺度转换模块C2f-EMSC和C2f-EMSCP-CSDN博客) 二、算法实现 1、将检测…

QT之 QDebug 调试(一)

在QT中&#xff0c;进行调试&#xff0c;则需要在头文件地方加上 #include <QDebug> 加上之后&#xff0c;在编译之后则其输出的信息则在应用程序输出那里显示信息。 其QDebug 信息调试则如&#xff1a; qDebug() << " 需要插入的信息 "…

RPC教程 7.服务发现与注册中心

0.前言 这一节的内容只能解决只有一个服务的情况。要是有多个服务(即是多个结构体&#xff09;这种就解决不了&#xff0c;也即是没有服务ip地址和服务实例的映射关系。 1.为什么需要注册中心 在上一节中&#xff0c;客户端想要找到服务实例的ip,需要硬编码把ip写到代码中。…

猿媛员的专属春联来咯

我们“因程序汇聚&#xff0c;因猿份相识”&#xff0c;今天来给辛苦了一年的“猿媛员”们送上几幅恶搞对联&#xff0c;为图一笑 &#x1f604; 闲言少叙&#xff0c;上对联 龙行多福 上联&#xff1a;龙龙龙龙龙龙龙 下联&#xff1a;福福福福福福福 形象版 上联&#…

centos 7安装MySQl

本文参考借鉴&#xff1a;https://cloud.tencent.com/developer/article/2353312&#xff0c;非常赞&#xff01; 为了避免权限不足的问题&#xff0c;建议切换至root用户进行安装 1.MySQL的清理与安装 查看是否存在MySQL服务 安装mysql之前&#xff0c;需要先看看要安装系…

【极数系列】Flink搭建入门项目Demo 秒懂Flink开发运行原理(05)

文章目录 引言1.创建mavenx项目2.包结构3.引入pom依赖4.增加log4j2.properties配置5.创建主启动类6.构建打jar包7.flinkUI页面部署 引言 gitee地址&#xff1a;https://gitee.com/shawsongyue/aurora.git 源码直接下载可运行&#xff0c;模块&#xff1a;aurora_flink Flink 版…

phar反序列化漏洞

基础&#xff1a; Phar是一种PHP文件归档格式&#xff0c;它类似于ZIP或JAR文件格式&#xff0c;可以将多个PHP文件打包成一个单独的文件&#xff08;即Phar文件&#xff09;。 打包后的Phar文件可以像普通的PHP文件一样执行&#xff0c;可以包含PHP代码、文本文件、图像等各…

剖析线程池ThreadPoolExecutor

文章目录 线程池一、线程池概述二、ThreadPoolExecutor类详解三、线程池参数配置与优化四、线程池监控与调优五、线程池与其他并发工具比较六、线程池在实际应用中的案例分析案例背景线程池的配置配置线程池参数。处理用户请求 监控与调优 七、线程池的扩展与自定义实现八、线程…

Python爬虫---Scrapy框架---CrawlSpider

CrawlSpider 1. CrawlSpider继承自scrapy.Spider 2. CrawlSpider可以定义规则&#xff0c;再解析html内容的时候&#xff0c;可以根据链接规则提取出指定的链接&#xff0c;然后再向这些链接发送请求&#xff0c;所以&#xff0c;如果有需要跟进链接的需求&#xff0c;意思就是…