题目链接
题目思路
这个题我的思路就是贪心,就嗯贪。
我们只需要用一个标志位来记录当前位置的灯泡开关情况,如果当前位置和目标位置不同的话,就反转一次,同时总记录+1.
那么我们这个反转就可以使用位运算,因为灯泡只存在0,1两种情况,我们翻转的时候只需要异或上1即可。
代码实现
class Solution {
public int minFlips(String target) {
char[] str = target.toCharArray();
int turn = 0;
int res = 0;
for(int i = 0; i < str.length; i++){
if(str[i] != turn + '0'){
res++;
turn ^= 1;
}
}
return res;
}
}