1758. 生成交替二進位制字串的最少運算元
阿新 • • 發佈:2022-11-29
1758. 生成交替二進位制字串的最少運算元
給你一個僅由字元 '0' 和 '1' 組成的字串 s 。一步操作中,你可以將任一 '0' 變成 '1' ,或者將 '1' 變成 '0' 。
交替字串 定義為:如果字串中不存在相鄰兩個字元相等的情況,那麼該字串就是交替字串。例如,字串 "010" 是交替字串,而字串 "0100" 不是。
返回使 s 變成 交替字串 所需的 最少 運算元。
輸入:s = "0100"
輸出:1
解釋:如果將最後一個字元變為 '1' ,s 就變成 "0101" ,即符合交替字串定義。
遍歷
交替二進位制字串就01010101....和10101010...兩種。比較字串與這兩個交替串的最小差異即可
class Solution { public: int minOperations(string s) { string s1="",s2=""; int opera1=0,opera2=0; for(int i=0;i<s.size();i++){ if(i&1){ s1+='0'; s2+='1'; } else{ s1+='1'; s2+='0'; } } for(int i=0;i<s.size();i++){ if(s[i]!=s1[i]) opera1++; if(s[i]!=s2[i]) opera2++; } return min(opera1,opera2); } };