C语言练习题1

交替二进制字符串的最少操作数

要求:

给你一个仅由字符 '0' 和 '1' 组成的字符串 s 。一步操作中,你可以将任一 '0' 变成 '1' ,或者将 '1' 变成 '0' 。

交替字符串 定义为:如果字符串中不存在相邻两个字符相等的情况,那么该字符串就是交替字符串。例如,字符串 "010" 是交替字符串,而字符串 "0100" 不是。

返回使 s 变成 交替字符串 所需的 最少 操作数

《----来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-changes-to-make-alternating-binary-string
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。-- 》

思路:

交替字符串,A:10101010 或 B:01010101

你想把一个字符串111101变成 101010 需要改变改变4个数字,那么变成010101就只需要两次,也就是6-4次

那么我们只需要把字符串变成A或者B的一种即可,另一种就是 (数字总数  -  字符串变成A的变动个数)

还有一个知识点:

数字,字符串,字符,在ascii码表上是不一样的

s[i] =  '0' = 48

代码如下:

int minOperations(char * s){

int nub = 0;
int i =0;
for(i =0;s[i]!= '';i++)
{
    //printf(" %d,%d.",s[i],(i%2));
    if(s[i]%2  != i%2)
    {
        nub ++;
       // printf("%d ",nub);
    }
}

 //printf("%d ",i);
if(nub > (i-nub))
{
    nub = i-nub;
}

return nub;
}
原文地址:https://www.cnblogs.com/8335IT/p/14587135.html