C++描述 LeetCode 5676. 生成交替二進制字串的最少運算元
??大家好,我叫亓官劼(qí guān jié ),在CSDN中記錄學習的點滴歷程,時光荏苒,未來可期,加油~博主目前僅在CSDN中寫博客,唯一博客更新的地址為:亓官劼的博客 ,同時正在嘗試在B站中做一些內容分享,B站主頁為: 亓官劼的B站主頁
本文原創為亓官劼,請大家支持原創,部分平臺一直在惡意盜取博主的文章!!!
若需聯系博主,可以聯系本人微信:qiguanjie2015
給你一個僅由字符 '0' 和 '1' 組成的字串 s ,一步操作中,你可以將任一 '0' 變成 '1' ,或者將 '1' 變成 '0' ,
交替字串 定義為:如果字串中不存在相鄰兩個字符相等的情況,那么該字串就是交替字串,例如,字串 "010" 是交替字串,而字串 "0100" 不是,
回傳使 s 變成 交替字串 所需的 最少 運算元,
示例 1:
輸入:s = "0100"
輸出:1
解釋:如果將最后一個字符變為 '1' ,s 就變成 "0101" ,即符合交替字串定義,
示例 2:
輸入:s = "10"
輸出:0
解釋:s 已經是交替字串,
示例 3:
輸入:s = "1111"
輸出:2
解釋:需要 2 步操作得到 "0101" 或 "1010" ,
提示:
1 <= s.length <= 104s[i]是'0'或'1'
解題思路
比較當前陣列有多少位不是交替相間的,記為cnt,則最小交換次數為min(cnt,len-cnt),
演算法實作
class Solution {
public:
int minOperations(string s) {
int cnt = 0, len = s.length();
char f[2] = {'0','1'};
for(int i = 0 ; i < len; i++)
if(s[i] != f[i%2])
cnt++;
return min(cnt,len-cnt);
}
};
CSDN認證博客專家
Python
全堆疊
資料結構與演算法
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/259828.html
標籤:其他
