360笔试题-字符置换
题目描述
字符串由"."和ASCII码字母构成,若每次操作将字符串中出现连续两个“.”,则以“.”替代,则可以将函数f(s)定义为使得串中不出现连续2个“.”的最小置换次数。
现考虑m个字符替换操作,每次将指定位置的字符替换为给定字符,求替换后函数的f(s)的值。
输入:
输入有若干组,第一行为2个整数n和m,n表示字符串长度,m表示字符替换次数。
第二行为长度为n的字符串。
接下来m行为m次字符替换操作。
输出:
对m次字符替换操作,输出m行结果,每行表示替换后的f(s)的结果。
1 #include <stdio.h> 2 #include <stdlib.h> 3 int f(char *s, int len) { 4 int cnt = 0; 5 for (int i = 1; i < len; i++) { 6 if (s[i] == '.' && s[i-1] == '.') cnt++; 7 } 8 return cnt; 9 } 10 int main () { 11 int n,m; 12 char *s; 13 while (scanf("%d%d", &n, &m) == 2) { 14 s = (char *)malloc(sizeof(char)*n); 15 scanf("%s",s); 16 int idx; 17 char c; 18 while (m--) { 19 scanf("%d%c",&idx, &c); 20 s[idx-1] = c; 21 printf("%d\n", f(s, n)); 22 } 23 } 24 return 0; 25 }
找我内推: 字节跳动各种岗位
作者:
ZH奶酪(张贺)
邮箱:
cheesezh@qq.com
出处:
http://www.cnblogs.com/CheeseZH/
*
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。