LeetCode 500. 键盘行

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


American keyboard


示例1:

输入: ["Hello", "Alaska", "Dad", "Peace"]
输出: ["Alaska", "Dad"]

注意:

  1. 你可以重复使用键盘上同一字符。
  2. 你可以假设输入的字符串将只包含字母。

将同一行的字符存入HashMap中,键为字符,值为行数(从上倒下分别为0,1,2),然后查找给定字符串是否全在同一行即可

    public String[] findWords(String[] words) {
    	HashMap<Character, Integer> map=new HashMap<>();
    	String []s= {"qwertyuiop","asdfghjkl","zxcvbnm"};
    	for(int i=0;i<s.length;i++) {
    		char a[]=s[i].toCharArray();
    		for(int j=0;j<a.length;j++) {
    			map.put(a[j], i);
    		}
    	}
    	List<String> list=new ArrayList<>();
    	for(int i=0;i<words.length;i++) {
    		String str=words[i].toLowerCase();
    		char a[]=str.toCharArray();
    		int x=map.get(a[0]);
    		boolean flag=true;
    		for(int j=1;j<a.length;j++) {
    			if(map.get(a[j])!=x)
    			{
    				flag=false;
    				break;
    			}
    		}
    		if(flag)
    			list.add(words[i]);
    	}
    	words=new String[list.size()];
    	int i=0;
    	for(String ss:list) {
    		words[i]=ss;
    		i++;
    	}
		return words;
        
    }

猜你喜欢

转载自blog.csdn.net/zx2015216856/article/details/80710065