题目大意: 匹配字符,给定一个字符串pattern和一个字符串数组quires。 对于quires中的每个字符串, 判断是不是pattern字符串各个字符间插入小写字母后的结果。 当然,可以不插入小写字母 如果匹配返回true 否则返回 false。
解题思路: 咋一看,题目挺简单的就是模拟。小编周赛碰到的时候 很开心 。直接上手,后来发现出现各种问题 花了大把时间 周赛直接掉分。 比如 我们要保证 pattern中的各个字符的相对位置要一致, 其次 pattern中的各个字母不能多也不能少,走了不少弯路。 讲道理 这应该是我编程能力太弱鸡了。 后来 发现这是一个正则匹配的问题。 pattern的各个字符中间匹配0个或者多个小写字母 ("[a-z]*") 那我们只要将pattern 切分 中间加入这个正则表达式 即是我们所需的正则表达式。 题目变得相对简单很多 。
public List<Boolean> camelMatch(String[] queries, String pattern) {
String newPattern = "[a-z]*" + String.join("[a-z]*", pattern.split("")) + "[a-z]*";
return Arrays.stream(queries).map(q -> q.matches(newPattern)).collect(Collectors.toList());
}
很惊艳 很短小精悍。 突然想到本科时 同学和我说过 “代码要写的像女孩子的裙子 越短越性感 !! ” 哈哈 皮一下很开心。