题目一:输入一串数字字符串,将其修改为不含连续相同数字的字符串,输出最小修改次数
例:输入111222333,可修改为151252353,最少修改3次则输出3
例:输入11223344,可修改为15253545,最少修改4次则输出4
思路一:遍历字符串,记录每一个连续相同数字的子串长度,最小修改次数为每个子串长度除以2之和
//编程语言:c 语言
#include<stdio.h>
#include<string.h>
int main()
{
char s[100];
int len ,i;
int num = 1,a = 0;
gets(s);
len = strlen(s);
for(i = 1;i < len;i ++)
{
if(s[i-1] == s[i])
{
num += 1;
//printf("num/2:%d\n",num/2);
}
else
{
a += num/2;
//printf("a:%d\n",a);
num = 1;
}
}
a += num/2;
printf("%d\n",a);
return 0;
}
思路二:遍历字符串,每遇到两个连续相同字符则需修改一次,次数修改次数加一,且若下一个字符也与前两个相等,则字符串索引加一
//编程语言:c 语言
#include<stdio.h>
#include<string.h>
int main()
{
char s[100];
int len ,i;
int num = 0;
gets(s);
len = strlen(s);
for(i = 1;i < len;i++)
{
if(s[i-1] == s[i])
{
num += 1;
i = (s[i+1] == s[i]) ? i + 1:i;
//printf("num/2:%d\n",num/2);
}
}
printf("%d\n",num);
return 0;
}