老师能不能帮我看下我的代码问题在哪?老是返回空字符串

来源:7-6 LeetCode:76. 最小覆盖子串

qq_慕运维6460539

2021-05-08

/**

  • @param {string} s
  • @param {string} t
  • @return {string}
    */
    var minWindow = function(s, t) {
    let l = 0
    let r = 0
    const need = new Map()
    // 构建需求字典: {目标字符:匹配次数}
    for ( let item of t ) {
    need.set( item, need.has(item) ? need.get(item) + 1 : 1 )
    }
    let needType = need.size
    // 存放最小字串
    let str = ''
    while ( r < s.length ) {
    const ele = s[r]
    // 截取包含目标字符串的子串
    if ( need.has(ele) ) {
    need.set( ele, need.get(ele) - 1 )
    if ( need.get(ele) === 0 ) needType -= 1
    }
    // 当needType为0时说明已全部匹配到,开始移动左指针,当遇到目标字符时给需求字典里该字符需求次数+1,然后继续移动一位
    while ( needType = 0 ) {
    const newStr = s.substring(l, r + 1)
    if ( !str || newStr.length < str.length ) str = newStr
    const ele2 = s[l]
    if ( need.has(ele2) ) {
    need.set(ele2, need.get(ele2) + 1)
    if (need.get(ele2) === 1) needType += 1
    }
    l += 1
    }
    r += 1
    }
    return str
    };
写回答

1回答

lewis

2021-05-09

在所有循环的地方打log,就能找到问题

0
0

JavaScript版数据结构与算法 轻松解决前端算法面试

夯实算法基础,填补技术短板,助力面试考题最后一公里

2479 学习 · 683 问题

查看课程