const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); let inputCount = 0; let n = 0, k = 0, s = ''; rl.on('line', function (line) { const tokens = line.split(' '); // console.log(line, tokens); if (inputCount === 0) { n = Number(tokens[0]); k = Number(tokens[1]); inputCount++; } else if (inputCount === 1) { s = line; inputCount++; } if (inputCount === 2) { let left = 0, right = 0; let cnt0 = 0, cnt1 = 0; let num = 0; if (s[0] === '0') { cnt0++; } else { cnt1++; } while (left < s.length && right < s.length && left <= right) { if (num === k) { console.log(left + 1, right + 1); break; } else if (num < k) { right++; if (right < s.length) { if (s[right] === '0') { cnt0++; } else { num = num + cnt0; cnt1++; } } } else { if (s[left] === '0') { num = num - cnt1; cnt0--; } else { cnt1--; } left++; } } if (left >= s.length || right >= s.length || left > right) console.log(-1); } });
双指针(题目好晦涩难懂)