题目
- 遍历规则为从 i 位置开始,如果 i 位置是 'x' 那么不需要放灯,如果 i 位置不是 'x',判断 i+1 的位置,如果 i+1 是 'x',那么 i 位置要放一个灯,因为 'x' 后面再放灯不能照亮 i 位置,如果 i 位置不是 'x',那么根据贪心在 i+1 位置放灯,不能 i+2 位置是 '.' 还是 'x' 都能满足,并且为了前面的灯不影响后面的灯,下一次需要从 i+3 位置开始
- 这是种隐性贪心,不需要精确指出放置的位置,潜规则放置在最好的位置
function process(str) {
let light = 0,
i = 0;
// while 中保证了之前的位置的灯不会影响 i 位置
while (i < str.length) {
if (str[i] === "x") {
i++;
} else {
light++;
if (i + 1 == str.length) {
break;
} else {
// 如果下一个位置是'x'
if (str[index + 1] == "x") {
index = index + 2;
} else {
// 如果下一个位置是'.',那么不管下下个位置是'.'还是'x',都去到+3的位置
// 如果下下个位置是'.',那么放中间位置满足(贪心策略放中间)
// 如果下下个位置是'x',那么放中间的位置还是满足(贪心策略放中间)
index = index + 3;
}
}
}
}
}