算法-键盘行
给你一个字符串数组 words
,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。
请注意,字符串 不区分大小写,相同字母的大小写形式都被视为在同一行。
美式键盘 中:
- 第一行由字符
"qwertyuiop"
组成。 - 第二行由字符
"asdfghjkl"
组成。 - 第三行由字符
"zxcvbnm"
组成。
示例 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]
由英文字母(小写和大写字母)组成
Java实现
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Solution {
public boolean isCon(Set<String> set1,String s){
int L=s.length();
for (int i=0;i<L;i++)
{
if(!set1.contains(String.valueOf(s.charAt(i))))
{
return false;
}
}
return true;
}
public String[] findWords(String[] words) {
String s1="qwertyuiopQWERTYUIOP";
String s2="asdfghjklASDFGHJKL";
String s3="zxcvbnmZXCVBNM";
int L1=s1.length();
int L2=s2.length();
int L3=s3.length();
Set<String> set1=new HashSet<>();
Set<String> set2=new HashSet<>();
Set<String> set3=new HashSet<>();
for(int i=0;i<L1||i<L2||i<L3;i++)
{
if(i<L1)
{
set1.add(String.valueOf(s1.charAt(i)));
}
if(i<L2)
{
set2.add(String.valueOf(s2.charAt(i)));
}
if(i<L3)
{
set3.add(String.valueOf(s3.charAt(i)));
}
}
List<String> list=new ArrayList<>();
for(int i=0;i<words.length;i++)
{
if(isCon(set1,words[i]))
{
list.add(words[i]);
}else if(isCon(set2,words[i]))
{
list.add(words[i]);
}else if(isCon(set3,words[i]))
{
list.add(words[i]);
}
}
String [] a=new String[list.size()];
for (int i=0;i<list.size();i++)
{
a[i]=list.get(i);
}
return a;
}
}
原文地址:https://blog.csdn.net/silent702366/article/details/145240984
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!