赞
踩
例:输入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;
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。