把pattern
中的a
和b
看成兩個不同的字串。字串value
看成x
個a
和y
個b
按照pattern
的模式組合起來的字串。把所有的這些可能算出來看能不能湊成value
。
先計算滿足a*x+b*y=c
的所有(x,y)
對vp
。c
表示value的大小。
然後對vp
進行遍歷,看能不能湊成value
。
測試的資料中,有各種特殊樣例。例如:pattern或者value為空的情況;pattern中a或b的個數為0的情況。把這些情況都考慮進去就過了。
class
solution
else
}for
(int x =
0; x*a <= c ; x ++
)return ret;
}bool
patternmatching
(string pattern, string value)
// value為空的情況
if(value.
size()
==0)if
(flag[0]
==0||flag[1]
==0)return
true
;else
return
false
;// pattern為空的情況
if(pattern.
size()
==0)return
false
; vectorint,
int>> vp;
// a或者b的個數為空,但是另乙個個數不能整除c的情況
vp =
vpii
(flag[0]
, flag[1]
, value.
size()
);if(vp.
empty()
)return
false
;for
(auto
& i: vp)
for(
auto
& i: vp)
else
} cout << a << endl;
}else
else
} cout << b << endl;}}
if(f)
return
true;}
return
false;}
};
LeetCode面試題 16 18 模式匹配
同步儲存一下。這還叫中等難度?再次照題解 分類討論 1.pattern為空,則只有value為空時為true,否則false 2.當value為空時,如果pattern中既有a也有b則為false,否則為true 3.當二者都不為空,如果pattern只有a或者只有b,如果value能整除patte...
Leetcode 面試題 16 18 模式匹配
你有兩個字串,即pattern和value。pattern字串由字母 a 和 b 組成,用於描述字串中的模式。例如,字串 catcatgocatgo 匹配模式 aabab 其中 cat 是 a go 是 b 該字串也匹配像 a ab 和 b 這樣的模式。但需注意 a 和 b 不能同時表示相同的字串。...
LeetCode面試題 16 18 模式匹配
你有兩個字串,即pattern和value。pattern字串由字母 a 和 b 組成,用於描述字串中的模式。例如,字串 catcatgocatgo 匹配模式 aabab 其中 cat 是 a go 是 b 該字串也匹配像 a ab 和 b 這樣的模式。但需注意 a 和 b 不能同時表示相同的字串。...