一、先上代码
public class Solution_1023 {
public List<Boolean> camelMatch(String[] queries, String pattern) {
List<Boolean> ans = new ArrayList<Boolean>();
int n = queries.length;
for (String query : queries) {
ans.add(check(query, pattern));
}
return ans;
}
/**
* 判断query和pattern是否匹配
* @param query
* @param pattern
* @return
*/
public Boolean check(String query, String pattern) {
int m = query.length(), n = pattern.length();
int i = 0, j = 0;
while (i < m && j < n) {
char c1 = query.charAt(i), c2 = pattern.charAt(j);
if (c1 == c2) {
++i;
++j;
} else if (Character.isUpperCase(c1)){
return false;
} else {
++i;
}
}
if (j < n) {
return false;
}
for (; i < m; ++i) {
if (Character.isUpperCase(query.charAt(i))) {
return false;
}
}
return true;
}
}
二、提交结果
三、思路
定义两个指针i,j分别指向query和pattern,当字符相等时i,j都加1;
不等时判断query当前字符,如果说大写,直接返回false;
如果是小写,i加1;
跳出while循环后,判断i和j的值:
如果j未遍历到pattern最后,返回false;
然后将遍历query剩下的字符,如果有大写直接返回false。
如果都遍历到最后,返回true
作者:christopher-91
链接:https://leetcode.cn/problems/camelcase-matching/solution/shuang-zhi-zhen-by-christopher-91-qvi0/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。