LeetCode面試題 16 18 模式匹配

2021-10-07 10:40:53 字數 1567 閱讀 3044

你有兩個字串,即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。測試的資料中,有...