Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public:
- bool helper_isMatch(string text, string pattern, int textIndex, int patternIndex,
- unordered_map<string, bool> &memo){
- string key = to_string(textIndex) + "|" + to_string(patternIndex);
- if(memo.find(key)!=memo.end()){
- return memo[key];
- }
- if(textIndex==text.size() && patternIndex==pattern.size()){
- return true;
- }
- if(textIndex<text.size() && patternIndex==pattern.size()){
- return false;
- }
- if(textIndex==text.size() && patternIndex<pattern.size()){
- if(pattern[patternIndex]=='*'){
- memo[key] = helper_isMatch(text, pattern, textIndex, patternIndex+1, memo);
- return memo[key];
- }else{
- return false;
- }
- }
- bool to_return = false;
- if(pattern[patternIndex]=='*'){
- to_return = helper_isMatch(text, pattern, textIndex+1, patternIndex, memo) ||
- helper_isMatch(text, pattern, textIndex, patternIndex+1, memo);
- }else{
- if(pattern[patternIndex]=='?'){
- to_return = helper_isMatch(text, pattern, textIndex+1, patternIndex+1, memo);
- }else if(pattern[patternIndex]==text[textIndex]){
- to_return = helper_isMatch(text, pattern, textIndex+1, patternIndex+1, memo);
- }else{
- to_return = false;
- }
- }
- memo[key] = to_return;
- return to_return;
- }
- bool isMatch(string s, string p) {
- unordered_map<string, bool> memo;
- return helper_isMatch(s, p, 0, 0, memo);
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment