九度OJ 1199:找位置 (计数)
来源:互联网 发布:mti知乎 编辑:程序博客网 时间:2024/06/08 18:35
- 题目描述:
对给定的一个字符串,找出有重复的字符,并给出其位置,如:abcaaAB12ab12
输出:a,1;a,4;a,5;a,10,b,2;b,11,1,8;1,12, 2,9;2,13。
- 输入:
输入包括一个由字母和数字组成的字符串,其长度不超过100。
- 输出:
可能有多组测试数据,对于每组数据,
按照样例输出的格式将字符出现的位置标出。
- 样例输入:
abcaaAB12ab12
- 样例输出:
a:0,a:3,a:4,a:9b:1,b:101:7,1:112:8,2:12
- 提示:
1、下标从0开始。
2、相同的字母在一行表示出其出现过的位置。
- 来源:
- 2005年华中科技大学计算机保研机试真题
代码:
找个数组或建个结构体计数。
代码:
#include <stdio.h>#include <stdlib.h> #define N 100 struct node { char c; int count; int index[N];}; void print(struct node *p){ int i; for (i=0; i<p->count-1; i++) printf("%c:%d,", p->c, p->index[i]); printf("%c:%d\n", p->c, p->index[i]);} int cmp(const void *a, const void *b){ struct node *c = (struct node *)a; struct node *d = (struct node *)b; return c->index[0] - d->index[0];} int main(void){ int i; char s[N+1]; struct node a[128]; while (scanf("%s", s) != EOF) { for (i=0; i<128; i++) { a[i].c = i; a[i].count = 0; a[i].index[0] = -1; } for (i=0; s[i]; i++) { a[s[i]].index[a[s[i]].count] = i; a[s[i]].count ++; } qsort(a, 128, sizeof(a[0]), cmp); for (i=0; i<128; i++) { if (a[i].count > 1) print(&a[i]); } } return 0;}/************************************************************** Problem: 1199 User: liangrx06 Language: C Result: Accepted Time:30 ms Memory:912 kb****************************************************************/
0 0
- 九度OJ 1199:找位置 (计数)
- 九度OJ 题目1199:找位置
- 九度oj 1199 找位置
- 【九度OJ】1199:找位置
- 【九度OJ】题目1199:找位置 解题报告
- 九度-1199 找位置(链表)
- 九度OJ 1098:字母统计 (计数)
- 九度OJ 1149:子串计算 (计数、排序)
- 九度OJ 1182:统计单词 (计数)
- 九度OJ 1052:找x (基础题)
- 九度OJ 1170:找最小数 (最值)
- 九度OJ 1052 找x
- 九度OJ 1052 找x
- 九度OJ 1170 找最小数
- 九度OJ题目1052:找x
- 九度 OJ 1170:找最小数
- 九度 OJ 1052:找x
- 九度OJ题目1052:找x
- Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系
- Java Websocket实例
- jQuery学习之旅 Item4 细说DOM操作
- 斩赤红之瞳变革 第一章:贪玩不一定是坏事
- Virtualbox WDDM之DxgkDdiQueryDeviceDescriptor
- 九度OJ 1199:找位置 (计数)
- 理财
- Qualcomm Camera
- 我的学习笔记(一)
- 日报2015/10/26(极客学院安卓视频学习)
- 1 分钟上手 Freemarker
- C/C++ 使用rand()组合形式生成大于15位的随机数时存在的问题
- 【Android开发进阶】Android屏幕适配全攻略(最权威的官方适配指导)
- 自定义属性