题目:500. 键盘行
方法1 正则表达式
1、思路:使用正则表达式匹配字符串
2、算法
(1) 使用Pattern类和Matcher类对字符串进行匹配操作
(2) 如果字符串str匹配成功,将str加入动态数组list中
(3) 将动态数组List转换成数组
3、java代码
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
class Solution {
public String[] findWords(String[] words) {
//Pattern对象:是一个正则表达式的编译表示
String REGEX = "^[qwertyuiopQWERTYUIOP]+$|^[asdfghjklASDFGHJKL]+$|^[zxcvbnmZXCVBNM]+$";
Pattern pattern = Pattern.compile(REGEX);
//创建一个动态数组list
List<String> list = new ArrayList();
for (String str : words) {
//Matcher对象:是对输入字符串进行解释和匹配操作的引擎
//需要调用 Pattern类的对象p 的matcher方法来获得一个Matcher对象。
Matcher m = pattern.matcher(str);
//如果字符串str匹配成功,将str加入动态数组list中
if (m.matches()) {
list.add(str);
}
}
//创建一个新的String类型的数组
//数组长度和List长度一样
String[] arr = new String[list.size()];
//将动态数组List转换成数组
return list.toArray(arr);
}
}