【Leetcode】500. Keyboard Row

键盘行单词识别算法
本文介绍了一种算法,用于从给定的单词列表中找出那些仅使用美国键盘上一行字母的单词。通过将键盘布局映射到哈希表中,并遍历每个单词检查其一致性,实现了高效筛选。

题目:
Given a List of words, return the words that can be typed using letters of alphabet on only one row’s of American keyboard like the image below.

Example:

Input: [“Hello”, “Alaska”, “Dad”, “Peace”]
Output: [“Alaska”, “Dad”]

思路:
我开始在想有没有什么简单的方法,就是键盘有什么规律,后来发现没有任何规律。。只能存三行了。。。。
用HashMap,把第一行的字母全放1,第二行的是2,第三行的是3。

然后用arraylist

先写个大的循环把单词记下来。
1.把它转换成全部小写。
2.取第一个字母带入map
3.开始循环是否相等,如果不相等直接break

Code:

public String[] findWords(String[] words) {
 Map<Character,Integer> pattern = new HashMap<>();       
 for(char letter:"qwertyuiop".toCharArray()){
 pattern.put(letter,1);
 }  
 for(char letter:"asdfghjkl".toCharArray()){
  pattern.put(letter,2);
   }       
   for(char letter:"zxcvbnm".toCharArray()){
  pattern.put(letter,3);
  }          
  List<String> arraylist = new ArrayList<>();
  for(String word:words){
  String wordLower = word.toLowerCase();
   int a = pattern.get(wordLower.charAt(0)); 
   boolean isSame = true;
   for(char l : wordLower.toCharArray()) {
   if(pattern.get(l)!=a){
       isSame = false;
       break;
       }
       }
       if(isSame) arraylist.add(word);
 } 
    return arraylist.toArray(new String[arraylist.size()]);     
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值