16 面試題 16 18 模式匹配

2021-10-07 09:53:03 字數 2126 閱讀 4815

難度:中等

面試題 16.18. 模式匹配

你有兩個字串,即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:

輸入: pattern = "abba", value = "dogdogdogdog"

輸出: true

解釋: "a"="dogdog",b="",反之也符合規則

0 <= len(pattern) <= 1000

0 <= len(value) <= 1000

你可以假設pattern只包含字母"a"和"b",

value僅包含小寫字母。

呵呵,重新定義了我對中等難度的認知 ,乙個字 不會

首先我開始的想法是 列舉 , 但是並沒有想到是要對字元的長度進行列舉, 是對 ab的每一種可能進行列舉,但是這樣太複雜了!!!但是又沒想到其他的方法

然後看了看 解析 對啊 對 ab 的長度進行 列舉不就可以了嗎!!!

不考慮極端情況(value和pattern空)

要判斷是否匹配 對a,b的長度進行列舉。那麼這樣 思路就很清晰了。

value和pattern的是已知的,通過遍歷pattern獲取a b 的個數 記為 acount和bcount(bcount=value.size()-acount)

現在對 acount 進行列舉,在內部在對pattern進行遍歷,那麼就可以很輕鬆的獲取 a和b值分別是什麼。

(如: value=」aaaddd「 pattern=」ab「 此時 acount = 2

那麼 a=」aa「)

注意 還有乙個等量關係需要注意 a的長度*acount+b的長度*bcount的長度=value的長度

此時 只需要對value 按照 ab已經獲取的值進行遍歷檢測即可

還要注意 a b有可能只存在乙個 且 a!=b

極端情況

vaule為空 pattern 為空 或 只有乙個字母 返回true

pattern為空 value為空 返回true

class

solution

// b的個數

int bcount = lp - acount;

// 保證a的值必大於0

// 交換 a b (對結果無影響)

if(acount < bcount)

}// value為空

// (pattern 為空或只有乙個字母) 等價於 bcount == 0

if(value.

empty()

)// 執行到這 說明value不為空 則必為false

if(pattern.

empty()

)// 對 a的長隊進行列舉 la為a的長度

for(

int la =

0; acount * la <= value.

size()

;++la)

// a值是否相同

else

if(stra != sub)

pos +

= la;

}else

else

if(strb != sub)

pos +

= lb;}}

if(istrue && stra != strb)}}

return

false;}

};

面試題 16 18 模式匹配

你有兩個字串,即pattern和value。pattern字串由字母 a 和 b 組成,用於描述字串中的模式。例如,字串 catcatgocatgo 匹配模式 aabab 其中 cat 是 a go 是 b 該字串也匹配像 a ab 和 b 這樣的模式。但需注意 a 和 b 不能同時表示相同的字串。...

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