zoukankan      html  css  js  c++  java
  • 500. Keyboard Row

    链接

    500. Keyboard Row

    题意

    给定一个单词数组,返回那些能仅用键盘上一行字母构成的单词
    注意:

    1. 可以重复使用字母
    2. 忽略大小写(全部视为小写)

    思路

    将每行字母各自存放到一个数组里面,然后分别遍历,用HashMap为三组字母放入不同的key值,以此来区分某个字母属于键盘上的哪一行。
    然后对给定单词数组进行遍历,只需拿到每个单词的首字母,然后用后面的字母一一与首字母进行比较,判断map的value值是否相等即可。
    若全部相等,则说明该单词符合条件。

    代码

    Java:

    public class Solution {
        public String[] findWords(String[] words) {
            String arr1[] = {"q", "w", "e", "r", "t", "y", "u", "i", "o", "p"};
            String arr2[] = {"a", "s", "d", "f", "g", "h", "j", "k", "l"};
            String arr3[] = {"z", "x", "c", "v", "b", "n", "m"};
            HashMap map = new HashMap();
            ArrayList list = new ArrayList();
            for (int i = 0; i < 10; i++) {
                map.put(arr1[i], 1);
            }
            for (int i = 0; i < 9; i++) {
                map.put(arr2[i], 2);
            }
            for (int i = 0; i < 7; i++) {
                map.put(arr3[i], 3);
            }
    
            for (int i = 0; i < words.length; i++) {
                boolean flag = true;
                for (int j = 0; j < words[i].length(); j++) {
                    if (map.get("" + words[i].toLowerCase().charAt(0)) != map.get("" + words[i].toLowerCase().charAt(j))) {
                        flag = false;
                        break;
                    }
                }
                if (flag) {
                    list.add(words[i]);
                }
            }
            String[] ans = new String[list.size()];
            return (String[]) list.toArray(ans);
        }
    }
    
  • 相关阅读:
    由DataSet导出生成excel的几种方法
    linq日期查询
    上传文件
    C#获取文件的MD5值
    设置图层透明度
    highcharts中的x轴如何显示时分秒时间格式
    axios中文文档
    如何在 Highcharts 图中当所占百分比为 0 时不显示0%
    一个简易的选择小时(时分秒)的插件
    三分钟上手Highcharts简易甘特图
  • 原文地址:https://www.cnblogs.com/zyoung/p/6542314.html
Copyright © 2011-2022 走看看