3.
start增加的情况:当前字母和window里的有重合,start变成当前字母。
end增加的情况:当前字母没在s中出现过,或者window里没有。
start的实现方式:因为每次遇到一样字母都会更新最新的index,所以start更新后一定是最近的重复了的字母(abab中a和b都有重复,start到第二个b的时候一定更新到3,因为b是最近重复的,也就是window里重复了的)
用vector:
205.
这道题点在于不仅t里的两个字母不能对应s里的一个字母,s里的两个字母也不能对应t里的同一个字母。所以如果是循环s去对应t的话,只能保证s里的a不对应t里的b和c。所以还需要再t循环一次。
还有一种更好的方法是:
每次i++把s和t的表都写上,查也是查两个.
ascii:
The 128 or 256 character limits of ASCII and Extended ASCII limits the number of character sets that can be held.
290.
istringstream in(str);
string cur;
in >> cur;
这道题可以照搬上面的思路,但是还要加一步:
因为词的个数可能跟pattern.size()不一样。
更聪明的做法:每次都记录not each other,but current index。
use i + 1
as the value to avoid 0
since map and unordered_map
will assign default 0
value for non-existing keys