openJudge | 统计字符数 C语言

2024-02-14 22:44
文章标签 语言 统计 字符 openjudge

本文主要是介绍openJudge | 统计字符数 C语言,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

总时间限制: 1000ms 内存限制: 65536kB

描述

判断一个由a-z这26个字符组成的字符串中哪个字符出现的次数最多

输入

第1行是测试数据的组数n,每组测试数据占1行,是一个由a-z这26个字符组成的字符串
每组测试数据之间有一个空行,每行数据不超过1000个字符且非空

输出

n行,每行输出对应一个输入。一行输出包括出现次数最多的字符和该字符出现的次数,中间是一个空格。
如果有多个字符出现的次数相同且最多,那么输出ascii码最小的那一个字符

样例输入

2
abbcccadfadffasdf

样例输出

c 3
f 4

答案

#include <stdio.h>
typedef struct {char ch;int countArise;
} chara;
typedef struct {chara chars[26];int last;
} words;
int main() {int n, j;char str[1000], *p=str, ch, maxAriseChar;static words word;scanf("%d\n", &n);for(int i = 0; i < n; i++) {gets(str);for(p = str; *p != 0; p++) {j = 0;for(; j < word.last; j++) {if(word.chars[j].ch == *p) {word.chars[j].countArise++;goto out;}}word.chars[word.last].ch = *p;word.chars[word.last++].countArise = 1;out:;}maxAriseChar = 0;for(int k = 0; k < word.last; k++) {if(word.chars[maxAriseChar].countArise < word.chars[k].countArise) {maxAriseChar = k;} else if(word.chars[maxAriseChar].countArise == word.chars[k].countArise && word.chars[maxAriseChar].ch > word.chars[k].ch) {maxAriseChar = k;}}printf("%c %d\n", word.chars[maxAriseChar].ch, word.chars[maxAriseChar].countArise);if(i < n-1) {ch = getchar();}word.last = 0;}
}

还有一份比较简单的。

#include <stdio.h>
typedef struct {char ch;int countArise;
} chara;
int main() {int n, j, pos=0;char str[1000], *p=str, ch, maxAriseChar;static chara chars[26];scanf("%d\n", &n);for(int i = 0; i < n; i++) {gets(str);for(p = str; *p != 0; p++) {j = 0;for(; j < pos; j++) {if(chars[j].ch == *p) {chars[j].countArise++;goto out;}}chars[pos].ch = *p;chars[pos++].countArise = 1;out:;}maxAriseChar = 0;for(int k = 0; k < pos; k++) {if(chars[maxAriseChar].countArise < chars[k].countArise) {maxAriseChar = k;} else if(chars[maxAriseChar].countArise == chars[k].countArise && chars[maxAriseChar].ch > chars[k].ch) {maxAriseChar = k;}}printf("%c %d\n", chars[maxAriseChar].ch, chars[maxAriseChar].countArise);if(i < n-1) {ch = getchar();}pos = 0;}
}

一些感想

  1. 我还是太习惯用last了,虽然遍历26次也没什么,所以我用last的办法使程序变复杂了。

这篇关于openJudge | 统计字符数 C语言的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/709774

相关文章

C语言线程池的常见实现方式详解

《C语言线程池的常见实现方式详解》本文介绍了如何使用C语言实现一个基本的线程池,线程池的实现包括工作线程、任务队列、任务调度、线程池的初始化、任务添加、销毁等步骤,感兴趣的朋友跟随小编一起看看吧... 目录1. 线程池的基本结构2. 线程池的实现步骤3. 线程池的核心数据结构4. 线程池的详细实现4.1 初

opencv实现像素统计的示例代码

《opencv实现像素统计的示例代码》本文介绍了OpenCV中统计图像像素信息的常用方法和函数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 统计像素值的基本信息2. 统计像素值的直方图3. 统计像素值的总和4. 统计非零像素的数量

如何使用 Bash 脚本中的time命令来统计命令执行时间(中英双语)

《如何使用Bash脚本中的time命令来统计命令执行时间(中英双语)》本文介绍了如何在Bash脚本中使用`time`命令来测量命令执行时间,包括`real`、`user`和`sys`三个时间指标,... 使用 Bash 脚本中的 time 命令来统计命令执行时间在日常的开发和运维过程中,性能监控和优化是不

hdu1496(用hash思想统计数目)

作为一个刚学hash的孩子,感觉这道题目很不错,灵活的运用的数组的下标。 解题步骤:如果用常规方法解,那么时间复杂度为O(n^4),肯定会超时,然后参考了网上的解题方法,将等式分成两个部分,a*x1^2+b*x2^2和c*x3^2+d*x4^2, 各自作为数组的下标,如果两部分相加为0,则满足等式; 代码如下: #include<iostream>#include<algorithm

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

hdu4267区间统计

题意:给一些数,有两种操作,一种是在[a,b] 区间内,对(i - a)% k == 0 的加value,另一种操作是询问某个位置的值。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import

hdu4417区间统计

给你一个数列{An},然后有m次查询,每次查询一段区间 [l,r] <= h 的值的个数。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamRead

hdu3333区间统计

题目大意:求一个区间内不重复数字的和,例如1 1 1 3,区间[1,4]的和为4。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;