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

键盘行算法

给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。

请注意,字符串 不区分大小写,相同字母的大小写形式都被视为在同一行

美式键盘 中:

  • 第一行由字符 "qwertyuiop" 组成。
  • 第二行由字符 "asdfghjkl" 组成。
  • 第三行由字符 "zxcvbnm" 组成。

American keyboard

示例 1:

输入:words = ["Hello","Alaska","Dad","Peace"]

输出:["Alaska","Dad"]

解释:

由于不区分大小写,"a" 和 "A" 都在美式键盘的第二行。

示例 2:

输入:words = ["omk"]

输出:[]

示例 3:

输入:words = ["adsdf","sfd"]

输出:["adsdf","sfd"]

提示:

  • 1 <= words.length <= 20
  • 1 <= words[i].length <= 100
  • words[i] 由英文字母(小写和大写字母)组成
class Solution {
    public String[] findWords(String[] words) {
        String first = "qwertyuiop";
        String second = "asdfghjkl";
        String third = "zxcvbnm";
        List<String> list = new ArrayList<>();
        int line = 0;
        for (String str : words) {
            char[] arr = str.toLowerCase().toCharArray();
            for (int j = 0; j < arr.length; j++) {
                if (line == 0) {
                    if (first.contains(String.valueOf(arr[j]))) {
                        line = 1;
                    }
                    if (second.contains(String.valueOf(arr[j]))) {
                        line = 2;
                    }
                    if (third.contains(String.valueOf(arr[j]))) {
                        line = 3;
                    }
                }
                if (line == 1) {
                    if (first.contains(String.valueOf(arr[j]))) {
                        if (j == arr.length - 1) {
                            line = 0;
                            list.add(str);
                        }
                    } else {
                        line = 0;
                        break;
                    }
                }
                if (line == 2) {
                    if (second.contains(String.valueOf(arr[j]))) {
                        if (j == arr.length - 1) {
                            line = 0;
                            list.add(str);
                        }
                    } else {
                        line = 0;
                        break;
                    }
                }
                if (line == 3) {
                    if (third.contains(String.valueOf(arr[j]))) {
                        if (j == arr.length - 1) {
                            line = 0;
                            list.add(str);
                        }
                    } else {
                        line = 0;
                        break;
                    }
                }
            }
        }
        return list.toArray(new String[list.size()]);
    }
}


http://www.kler.cn/a/441345.html

相关文章:

  • python:洛伦兹变换
  • 每日一题 429. N 叉树的层序遍历
  • 【Python实现机器遗忘算法】复现2020年顶会CVPR算法Selective Forgetting
  • AIP-132 标准方法:List
  • Linux相关概念和易错知识点(26)(命名管道、共享内存)
  • AI如何帮助解决生活中的琐碎难题?
  • uniapp跨端适配—条件编译
  • vue webpack详情配置说明
  • 在 Docker 容器内运行 MySQL 并执行 SQL 脚本文件
  • 【小白包会的】使用supervisor 管理docker内多进程
  • [maven]使用spring
  • Docker--Docker Registry(镜像仓库)
  • [Unity Shader] 【游戏开发】Unity Shader的结构2-深入理解 SubShader 的结构与应用
  • 【C 语言文件操作】—— 内存映射与高效 I/O 策略的深度融合
  • LabVIEW 保存文件
  • SpringBoot实现定时发送邮件功能
  • 【GoF23种设计模式】02_单例模式(Singleton Pattern)
  • 复原IP地址 什么是运算符重载? 如何在 C++ 中进行运算符重载?运算符重载在面向对象编程中的好处是什么?getline方法
  • 爬虫基础学习
  • 同轴共桨单兵微型无人机技术详解
  • 机器学习-多元线性回归
  • C# 入门编程
  • 使用C#获取有关磁盘驱动器的信息例如大小和可用空间
  • V少JS基础班之第二弹
  • 【基础】nginx简单配置
  • leetcode--mysql