- C++ unordered_map
- 分割字串(空格隔開)
Code
第一次解的時候的寫法,有很多的改善空間:第一點,字串分割可以用 istringstream
。第二點,map 可以用一個,也可以用兩個,重點是要檢查 pattern & string token 之間的一對一關係(不行多對一,也不行一對多)。
另外就是 if(iter < pattern.size() || iter < tokens.size() ) return false;
可以提早 check,節省時間。
使用 istringstream
:
上面的解法思路都是將文字 map 到文字,但是其實可以將文字 map 到 index,這樣也可以檢查一對一的關係,因為若 pattern 和 token map 到不同 index,代表他們落在不同位置,代表是一對多或是多對一的狀況發生。
要注意這裡是 map 到 i + 1
,因為若 key 不存在時返回的值是 0
。
還可以更近一步加速,用istringstream
或是 stringstream
邊讀邊判斷:
Link