g1001_1100.s1023_camelcase_matching.Solution Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-java21 Show documentation
Show all versions of leetcode-in-java21 Show documentation
Java-based LeetCode algorithm problem solutions, regularly updated
package g1001_1100.s1023_camelcase_matching;
// #Medium #String #Two_Pointers #Trie #String_Matching
// #2022_02_26_Time_1_ms_(73.86%)_Space_43_MB_(6.82%)
import java.util.LinkedList;
import java.util.List;
/**
* 1023 - Camelcase Matching\.
*
* Medium
*
* Given an array of strings `queries` and a string `pattern`, return a boolean array `answer` where `answer[i]` is `true` if `queries[i]` matches `pattern`, and `false` otherwise.
*
* A query word `queries[i]` matches `pattern` if you can insert lowercase English letters pattern so that it equals the query. You may insert each character at any position and you may not insert any characters.
*
* **Example 1:**
*
* **Input:** queries = ["FooBar","FooBarTest","FootBall","FrameBuffer","ForceFeedBack"], pattern = "FB"
*
* **Output:** [true,false,true,true,false]
*
* **Explanation:** "FooBar" can be generated like this "F" + "oo" + "B" + "ar".
*
* "FootBall" can be generated like this "F" + "oot" + "B" + "all".
*
* "FrameBuffer" can be generated like this "F" + "rame" + "B" + "uffer".
*
* **Example 2:**
*
* **Input:** queries = ["FooBar","FooBarTest","FootBall","FrameBuffer","ForceFeedBack"], pattern = "FoBa"
*
* **Output:** [true,false,true,false,false]
*
* **Explanation:** "FooBar" can be generated like this "Fo" + "o" + "Ba" + "r".
*
* "FootBall" can be generated like this "Fo" + "ot" + "Ba" + "ll".
*
* **Example 3:**
*
* **Input:** queries = ["FooBar","FooBarTest","FootBall","FrameBuffer","ForceFeedBack"], pattern = "FoBaT"
*
* **Output:** [false,true,false,false,false]
*
* **Explanation:** "FooBarTest" can be generated like this "Fo" + "o" + "Ba" + "r" + "T" + "est".
*
* **Constraints:**
*
* * `1 <= pattern.length, queries.length <= 100`
* * `1 <= queries[i].length <= 100`
* * `queries[i]` and `pattern` consist of English letters.
**/
public class Solution {
public List camelMatch(String[] queries, String pattern) {
List ret = new LinkedList<>();
for (String query : queries) {
ret.add(check(query, pattern));
}
return ret;
}
private Boolean check(String query, String pattern) {
int patternLen = pattern.length();
int patternPos = 0;
int uppercaseCount = 0;
for (int i = 0; i < query.length(); i++) {
char c = query.charAt(i);
if (Character.isUpperCase(c)) {
if (patternPos < patternLen && c != pattern.charAt(patternPos)) {
return false;
}
uppercaseCount++;
if (uppercaseCount > patternLen) {
return false;
}
patternPos++;
} else {
if (patternPos < patternLen && c == pattern.charAt(patternPos)) {
patternPos++;
}
}
}
return patternPos == patternLen;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy