codewar做题目

题目要求从字符串中选出一组相同字符数最多的字符及个数。例如:
“aaabbbbcdddddd” ‘d’-----6
“aabbc” ‘a-’----2
“ss445666gg7” ‘ 6’-----3

思路:用结构体存放新变化的字符,并根据所在标号,把标号的变化值存入已存入结构体的字符相对应的变化值变量中。“aaabbbbcdddddd”
存入结构体数组中的每组字符分别是:’a’,‘b’,‘c’,‘d’,’\0’,分别存入五个结构体中。
根据标号:a–0,
b --3
c—7
d----8
\0—14
先建立标号数组:0,3,7,8,14。
再计算变化值:3-0=3
7-3=4
8-7=1
14-8=6
生成4个变化值,并存入4个结构体数组中
此时:结构体数组只要其中0-3个就可以了
分别是3–‘a’,4–‘b’,1–‘c’,6–‘d’
然后,进行一次排序,把变化值最大值排到最前或最后(每次用第一项与后面的比较),小的就交换数据(变化值和字符都要同时交换)
最后,最前面【0】项就是要求解的值。

#include <stdio.h>int main()
{char *str = "aabbc";int i;int j = 0;int count = 0;int arr[256]={0};//存放标号struct char_count{//这样设置的好处是,只要求出变化值的最大值,其对应的字符也可以求出。int sum;//存放变化值,每个变化值对应首字符,例如‘aabbbc'--变化值为2--’a',3---'b',1---'c'char find;//存放变化后的首个字符}cc[256];//用结构体存放每一组数据(其中一个字符,对应一个标号)int temp;char ctemp;for(i=0;i<strlen(str)+1;i++){arr[j] = count;//把每种字符的起始标号存入一个数组中。例如'a'-0,'b'-2cc[j].find =str[count];if(str[i+1]!=str[i]){printf("char='%c',count=%d\n",str[count],count);count = i+1;//当字符之间有差异时,就记录下这个改变后字符的标号j++;//存放标号的数组的计数值,每次有新的标号时自增,以连续存放标号到数组中。}}//显示起始字母的标号,及起始字符for(i=0;i<j;i++){printf("'%c'--%d\n",cc[i].find,arr[i]);}putchar('\n');for(i=0;i<j;i++){cc[i].sum = arr[i+1]-arr[i];//将变化值存入结构体数组中}for(i=0;i<j-1;i++){printf("%d ",cc[i].sum);}putchar('\n');for(i=0;i<j-1;i++){if(cc[0].sum<cc[i+1].sum){//对结构体中的数字排序出最大项,排在首位temp = cc[i+1].sum;cc[i+1].sum= cc[0].sum;cc[0].sum = temp;//对结构体中的字符也随数字排序,最大数字中的字符排在首位ctemp = cc[i+1].find;cc[i+1].find = cc[0].find;cc[0].find = ctemp;}}for(i=0;i<j-1;i++){printf("%d----%c\n",cc[i].sum,cc[i].find);}printf("The max char is:'%c',and have number is:%d\n",cc[0].find,cc[0].sum);putchar('\n');return 0;
}

codewar题目练习相关推荐

  1. CodeWar代码学习

    进入CodeWar已经一个多月了,基本的暴力算法只能支撑我走到5级了,今天开始正式学习数据结构与算法,边刷题便学习吧.. Kyu7test 题目:正整数有很多华丽的特征.其中一些可以表示为两个或多个连 ...

  2. codewar 代码练习1——8级晋升7级

    最近发现一个不错的代码练习网站codewar(http://www.codewars.com).注册了一个账号,花了几天的茶余饭后时间做题,把等级从8级升到了7级.本文的目的主要介绍使用感受及相应题目 ...

  3. LeetCode简单题之完成一半题目

    题目 有 N 位扣友参加了微软与力扣举办了「以扣会友」线下活动.主办方提供了 2N 道题目,整型数组 questions 中每个数字对应了每道题目所涉及的知识点类型. 若每位扣友选择不同的一题,请返回 ...

  4. 阿里巴巴Web前端面试的一道JS题目,求解答!!!

    题目大概是这种: function outer(){return inner;var inner = "a";function inner(){};inner = 9; } ale ...

  5. 个人作业1——四则运算题目生成程序

    需求分析: 1.控制运算表达式的题目数量,根据键盘输入数字提供对应数量表达式 2.运算符个数不能超过三个 3.能够自动生成四则运算 4.随机生成分数运算或整数运算 5.程序判断对错并给出正确答案 6. ...

  6. 九度oj 题目1411:转圈

    题目描述: 在一个有向图有n个顶点(编号从1到n),给一个起点s,问从起点出发,至少经过一条边,回到起点的最短距离. 输入: 输入包括多组,每组输入第一行包括三个整数n,m,s(1<=n< ...

  7. 题目1000:计算a+b

    题目描述: 求整数a,b的和. 输入: 测试案例有多行,每行为a,b的值. 输出: 输出多行,对应a+b的结果. 样例输入: 1 2 4 5 6 9 样例输出: 3 9 15 #include< ...

  8. 题目1460:Oil Deposit

    题目描述: The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. ...

  9. 2014百度面试题目---“求比指定整数大且最小的不重复数”解答

    题目:给定任意一个正整数,求比这个数大且最小的"不重复数","不重复数"的含义是相邻两位不相同,例如1101是重复数,而1201是不重复数. 代码: #incl ...

最新文章

  1. EasyUI表单验证,自定义插件验证,自定义js插件验证,远程验证,常见手机号,中英文,qq等验证规则验证...
  2. ERROR Streaming result set com.mysql.jdbc.RowDataDynamic@1d5a7f6 is still active. No statements may
  3. SAP CRM WebClient UI和Hybris backoffice UI开发的相同点
  4. 这个太有意思了,程序员可以消遣娱乐
  5. 深度学习之 OHEM (Online Hard Example Mining)
  6. 【Elasticsearch】elasticsearch 段 segment 段合并
  7. 梁胜:做开源项目的贡献者没有意义 | 人物志
  8. LayaAir graphics 矢量绘图之直线、折线、曲线
  9. 无需编码生成信息系统_无需编码即可逐步进行花分类
  10. 省级面板数据(1990-2019):能源消费(煤炭、焦炭、石油、原油等)excel或stata版本
  11. python程序与设计课程设计二级减速器_二级减速器课程设计心得体会
  12. Firefox内存占用过高假死解决方法
  13. 小小故事--大大道理
  14. vue图片宽高自适应_Vue组件宽高自适应问题
  15. 解决问题:RuntimeError: the sip module implements API v11.0 to v11.2 but the module requires API v12.0
  16. Mysql中的七种常用查询连接详解
  17. 文本工具来查看、分析、统计,比较
  18. Google最热门60款开源项目
  19. User-Agent详解
  20. 最优化:一维搜索的Wolfe条件与Goldstein条件

热门文章

  1. USTB校园网一键登录开机自动登录
  2. 支付宝支付成功后通知在微信打开的提示页面
  3. 刷脸支付优势显而易见,但最突出的竟然是它
  4. 【学习笔记】Python二级考试04 turtle库的使用
  5. skimage data函数库
  6. MYS-6ULX-IOT 开发板测评——面向高端物联网的极具性价比解决方案
  7. java poi设置单元格格式为数值_java中导出excel设置单元格的样式为数字格式怎么设置_Java代码实现设置单元格格式...
  8. 最新二开抢单系统淘宝自动抢单源码安装教程
  9. 真无线耳机哪个品牌音质最好?四款真无线蓝牙耳机
  10. 阿法狗的智慧,被赋予职业围棋200段的选手