剑指Offer----扩展:删a复制b

来源:互联网 发布:js中的splice方法 编辑:程序博客网 时间:2024/06/05 02:18

问题描述:


删除一个字符串中所有的a,并且赋值所有的b,字符串足够大!

关键是倒着复制字符串数组!

/*删除一个字符串所有的a,并且复制所有的b。注:数组足够大!*/#include<stdio.h>#include<stdlib.h>void Function(char *str){if (str == NULL)return;int n = 0, numb = 0;for (int i = 0; str[i] != '\0'; ++i){if (str[i] != 'a')str[n++] = str[i];//统计字符串中非a字符的数量,并删除a字符if (str[i] == 'b')numb++;//统计字符串中b字符的数量}//倒着复制int newLength = numb + n;str[newLength] = 0;for (int i = newLength - 1, j = n - 1; j >= 0; --j){str[i--] = str[j];if (str[j] == 'b')str[i--] = 'b';}}int main(){char str[100] = "abcdabcaabbccdaabbccd";Function(str);printf("str = %s\n", str);printf("%s  %s\n", __DATE__, __TIME__);system("pause");return 0;}

运行结果:

str = bbcdbbcbbbbccdbbbbccdAug 25 2016  15:06:56请按任意键继续. . .


与该题目思想一致的相关题目:

替换空格

两个排序的数组融合成一个数组


0 0
原创粉丝点击