巩义企业网站托管服务商,做网站品牌公司,南京做网站最好的公司,做淘宝网站的主机本专栏为c语言练习专栏#xff0c;适合刚刚学完c语言的初学者。本专栏每天会不定时更新#xff0c;通过每天练习#xff0c;进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字#xff1a;字符个数统计 多数元素 投票法 #x1f493;博主csdn个人主页#xf… 本专栏为c语言练习专栏适合刚刚学完c语言的初学者。本专栏每天会不定时更新通过每天练习进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字字符个数统计 多数元素 投票法 博主csdn个人主页小小unicorn ⏩专栏分类C语言天天练 代码仓库小小unicorn的代码仓库 关注我带你学习编程知识 Day1 题目一题目描述解题思路代码实现结果情况 题目二题目描述解题思路代码实现结果情况 总结 题目一
题目描述 题目来源字符个数统计 编写一个函数计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 包括 0 和 127 )换行表示结束符不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次 例如对于字符串 abaca 而言有 a、b、c 三种不同的字符因此输出 3 。 数据范围 1≤n≤500 解题思路
运用的是HASH表的思想因为只有最多只有128种数据所以只需维护一个大小为128的字符数组让输入的字符作为数组下标取出这个下标数组中的字符直接与输入的字符比较不用for循环从头再查如果相同则跳过不同则赋值让结果最后遇到’\n’结束循环返回结果即可。
代码实现
#includestdio.hint main()
{int hash[128] {0};char B;int count 0;while (scanf(%1c, B) ! EOF) {int asc (int)B;if (hash[asc] ! 1) {count;hash[asc] 1;}}printf(%d, count - 1); //需要去掉最后的回车键
}
结果情况 符合题目要求问题得到解决。
题目二
题目描述 题目来源多数元素 给定一个大小为 n 的数组 nums 返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的并且给定的数组总是存在多数元素。 解题思路
投票法
因为多数元素在数组里出现的次数绝对大于n/2所以用不同元素消去相同元素剩下的必然是相同元素
代码实现
int majorityElement(int* nums, int numsSize)
{int candidatenums[0];//投票对象int count1;//票数for(int i1;inumsSize;i)//遍历投票对象{if(nums[i]candidate)//投票对象相同票数1{count;}else//投票对象不同票数-1{count--;if(count0)//该元素不是多数元素更新投票对象candidate并把票数置1{candidatenums[i];count1;}}}return candidate;
}
结果情况 符合题目要求问题得到解决。
总结 文章到这里就要告一段落了有更好的想法或问题欢迎评论区留言。 希望今天的练习能对您有所收获咱们下期见