難度:中等
面試題 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 不能同時表示相同的字串。...