1.循环s字符串,使用i标记当前循环位置,同时定义一个指针p2,p2每移动一次,就把该字符放入hash表中,并存放该字符次数,如果p2移动的次数大于s字符串的长度或者大于p字符串的长度,循环结束。
2.如果s字符串循环没有结束,我们将得到一个长度为p2-i的hash表,将hash表和p字符串比较,循环p字符串,每循环一次,检查字符是否在hash表中存在,存在则把hash表中该字符的次数减1,如果次数为0,则删除hash中的该字符字段,不存在则中断p字符串的循环。
3.上述1,2步骤完成后,我们会得到一个空的hash表,并且p2指针刚好在 i + p字符串长度的位置,说明i就是异位词的开始位置。
4.继续下一轮的s字符串循环。
function findWord( s ,  p ) {
    // write code here
    let p2Len = p.length;
    let sLen = s.length;
    let arr = []
    for(let i=0;i<sLen;i++) {
        let p2 = i;
        let map = new Map()
        while(p2 - i < p2Len && p2 < sLen) {
            let value = map.get(s[p2])
            map.has(s[p2]) ? map.set(s[p2], value+1) : map.set(s[p2], 1)
            p2++
        }
        if (p2 > sLen || p2 - i < p2Len) {
            return arr;
        }
        for(let j = 0;j<p2Len;j++) {
            if(!map.has(p[j])) {
                break;
            }
            let value = map.get(p[j])
            map.set(p[j], value - 1);
            if (map.get(p[j]) == 0) {
                map.delete(p[j])
            }
        }
        if (p2 - i == p2Len && map.size == 0) {
            arr.push(i)
        }
    }
    return arr
}