老师能不能帮我看下我的代码问题在哪?老是返回空字符串
来源: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,就能找到问题
00
相似问题