leetcode面試題模式匹配

2021-10-07 11:08:15 字數 1828 閱讀 6317

題目描述:

你有兩個字串,即pattern和value。 pattern字串由字母"a"和"b"組成,用於描述字串中的模式。例如,字串"catcatgocatgo"匹配模式"aabab"(其中"cat"是"a",「go"是"b」),該字串也匹配像"a"、"ab"和"b"這樣的模式。但需注意"a"和"b"不能同時表示相同的字串。編寫乙個方法判斷value字串是否匹配pattern字串。

示例 1:

輸入: pattern = 「abba」, value = 「dogcatcatdog」

輸出: true

示例 2:

輸入: pattern = 「abba」, value = 「dogcatcatfish」

輸出: false

示例 3:

輸入: pattern = 「aaaa」, value = 「dogcatcatdog」

輸出: false

示例 4:

0 <= len(pattern) <= 1000

0 <= len(value) <= 1000

你可以假設pattern只包含字母"a"和"b",value僅包含小寫字母。

題目分析:這道題,我一開始真的一點思路都沒得,哭了哭了,太菜了,確定是medium難度的題嗎!總之,這是乙個比較複雜的模擬題,我們先從邊界情況開始考慮:

如果pattern為空,那麼只有value為空才能滿足匹配

如果value為空,此時pattern為空或者只有乙個字母(a/b)時,此時可以將這個字母設定為空,來達到匹配的目的

如果pattern與value都不為空,此時就是我們的正文了。

直接去列舉各自字串的話更複雜了,我們可以嘗試通過列舉字串(a/b)長度來簡化處理過程。由題目描述可知,除了字串本身還有個數來決定是否匹配,所以這兩個因素都要考慮到,而個數是確定的(直接對pattern計算即可),那麼只需要列舉長度就可以了。同時,確定了a長度之後,b的長度也就確定了。假設,確定了a的長度,同時計算出b的長度,接下來對value進行遍歷,對pattern匹配到a/b時,對value對應的字串進行判斷,value的字串部分怎麼控制呢?通過乙個指標來擷取即可。

只要不相等即為不匹配。所以,只要我們能找到乙個len(a,b)解即可。還有乙個點,a與b是不能相同的,這個也要進行判斷。這題真的細節挺多的,看**吧

class

solution

//對稱性,a/b都是相同的,以個數大的去計算,符合下面演算法的通用性

//交換

if(cntapattern =

newstring

(change);}

//邊界情況

if(value.

length()

==0)return cntb ==0;

if(pattern.

length()

==0)return

false

;//都不為空

for(

int lena =

0;lena*cnta<=value.

length()

;lena++

)else

} pos += lena;

}else

else

} pos += lenb;}}

//a,b代表的字串不能相同

if(isok&&

!(stra.

equals

(strb)))

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 不能同時表示相同的字串。...