华为OJ平台试题 ——字符串:打印字符串中重复的字符
来源:互联网 发布:微信 积分 源码下载 编辑:程序博客网 时间:2024/05/18 13:12
/* * 功能:打印字符串中重复的字符 * * 输入:字符串 * 算法:1、首先将第一个字符存如定义的结构体数组 a[0].c,同时将a[0].count = 1 * 2、将其他的字符依次与第一个字符进行比较,若相同,则a[0].count++,若不同,则将这个字符存入新的a[1]; *以此类推 * 3、根据a[].count 的值是否大于等于2,将值输出 */ #include<stdio.h> #include <string.h> #define N 1024/* * 定义一个结构体:字符和字符数目 */ struct CountChar { char c; int count; }; int main(void) { struct CountChar a[256]; /* 定义一个结构体数组,该数组有236个元素,均为struct CountChar 类型数据 */ char b[N]; int i, j, k = 1;; /* 将结构体数组初始化 */ for(i = 0; i < 256; i++) { a[i].c= 0; a[i].count=0; } gets(b); /* 输入字符串 */ a[0].c = b[0];a[0].count = 1; /* * 将字符串进行解析 */ for(i=1; b[i] != '\0'; i++) {for( j = 0;j < k;j++){if(a[j].c == b[i]) /* 判断新的值是否与存在的值相同 */ {a[j].count ++;break; /* 此处的break 语句非常重要 */}else if( (b[i] != a[j].c) && j == k-1 ){a[k].c = b[i]; /* 这里先把 b[i] 赋值给了 a[k].c, 但a[j].c 的值仍未变,只有当j等于k时才<span style="white-space:pre"></span>会改变,所以当再次进入到上面的判断时,就可以将先加入的数据的count 加1 */k++;}}}for(i = 0; i < k;i++ ){if( a[i].count >= 2 )printf("%c",a[i].c );}}
0 0
- 华为OJ平台试题 ——字符串:打印字符串中重复的字符
- 华为OJ平台试题 ——字符串:输出数组中重复的数组
- 华为OJ平台试题 —— 字符串:字符串加解密
- 华为OJ平台试题 ——字符串:字符串比较排序
- 华为OJ平台试题 —— 字符串:字符串最后一个单词的长度
- 华为OJ平台试题 —— 字符串:图片整理
- 华为OJ平台试题 —— 数组:字符串反转
- 找出字符串中第一个只出现一次的字符——来自华为OJ平台测试基础篇
- 华为OJ平台试题 —— 字符串:名字的漂亮度
- 【华为机试题】删除输入字符串中重复字符
- 打印字符串中重复的字符
- 华为编程大赛——删除字符串中重复字符
- 华为2012.09.03浙大机试题 去掉字符串中的重复字符,字符串中重复字符的压缩,根据输入计算字符串结果
- 华为OJ平台——在字符串中找出连续最长的数字串
- 华为OJ——删除字符串中出现次数最少的字符
- 华为OJ——找出字符串中第一个只出现一次的字符
- 华为OJ——删除字符串中出现次数最少的字符
- 华为OJ——找出字符串中第一个只出现一次的字符
- Java设计模式-目录
- [leetcode] Binary Tree Paths
- HDU 5401 Persistent Link/cut Tree
- 如何实现Siri中的波纹动画
- 利用Linux LiveCD迁移Windows到SSD硬盘
- 华为OJ平台试题 ——字符串:打印字符串中重复的字符
- 文章标题
- RT-Thread finsh源码分析: finsh_heap.h
- 2015 7 3 java核心技术卷一 7-10章 图形,事件处理,Swing组件和应用程序部署
- Linux下Sublime安装
- spmio内网源部署
- 【GDOI 2013模拟】总结
- JAVA中实现加法器
- HDU 5402 (构造题)Travelling Salesman Problem