你有兩個字串,即pattern和value。 pattern字串由字母"a"和"b"組成,用於描述字串中的模式。例如,字串"catcatgocatgo"匹配模式"aabab"(其中"cat"是"a",「go"是"b」),該字串也匹配像"a"、"ab"和"b"這樣的模式。但需注意"a"和"b"不能同時表示相同的字串。編寫乙個方法判斷value字串是否匹配pattern字串。鏈結
不會。。看題解重新注釋一遍。
class
solution
//記錄pattern中a,b的數量
for(
int i =
0; i < patlen; i++
)else
}//2 pattern不為""
value為"",判斷pattern是否為一種字元組成
if(vallen ==0)
value不為"",處理pattern只有一種字串的情況
if(acount ==0)
else
if(bcount ==0)
value不為"",處理pattern中'a'或'b'可為""的情況if(
helper
(value, acount))if
(helper
(value, bcount)
) value不為"",列舉'a','b'所代表的字串長度
//使得acount*alen+bcount*blen=vallen
for(
int alen =
1; alen * acount <= vallen - bcount; alen++
)//通過alen計算blen
int blen =
(vallen - alen * acount)
/ bcount;if(
check
(pattern, value, alen, blen))}
return
false;}
boolean
helper
(string val,
int k)
int perstrlen = len / k;
for(
int i = perstrlen; i < len; i += perstrlen)
}return
true;}
boolean
check
(string pattern, string value,
int alen,
int blen)
elseif(
!value.
substring
(j, j + alen)
.equals
(a))
j += alen;
}else
elseif(
!value.
substring
(j, j + blen)
.equals
(b))
j += blen;}}
return
true;}
}
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中的a和b看成兩個不同的字串。字串value看成x個a和y個b按照pattern的模式組合起來的字串。把所有的這些可能算出來看能不能湊成value。先計算滿足a x b y c的所有 x,y 對vp。c表示value的大小。然後對vp進行遍歷,看能不能湊成value。測試的資料中,有...