当前位置: 首页 > news >正文

OpenJudge | 字符串中最长的连续出现的字符

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

描述

求一个字符串中最长的连续出现的字符,输出该字符及其出现次数,字符串中无空白字符(空格、回车和tab),如果这样的字符不止一个,则输出第一个

输入

首先输入N,即测试数据的组数
每组测试数据输入:
一行,一个不包含空白字符的字符串,字符串长度小于200

输出

一行,输出最长的连续出现的字符及其出现次数,中间用空格隔开

样例输入

2
aaaaabbbbbcccccccdddddddddd
abcdefghigk

样例输出

d 10
a 1

思路

遍历字符串,记录当前字符和出现次数,如果当前字符和上一个字符相同,次数加一,否则比较当前次数和最大次数,如果当前次数大于最大次数,更新最大次数和字符,最后输出最大次数和字符。

其实,一开始我想使用map来解决,但是碰到了一些记录上的问题,所以最后还是使用了pair来解决。用map倒像是将问题复杂化了。

这其实就是一个简单的遍历+获取最大值的问题。

感谢xcdq的博文

Code

C++

#include <bits/stdc++.h>
using namespace std;int main() {int N;cin >> N;for(int i = 1; i <= N; i++) {string str;pair<char, int> tmp (0, 0), max (0, 0);cin >> str;for(long long unsigned int j = 0; j < str.size(); j++) {if(tmp.first == str[j]) tmp.second++;else {if(tmp.second > max.second) {max.second = tmp.second;max.first = tmp.first;}tmp.second = 1;tmp.first = str[j];}}if(tmp.second > max.second) {max.second = tmp.second;max.first = tmp.first;}cout << max.first << " " << max.second << endl;}
}

C

#include <stdio.h>
#include <string.h>int main() {int N;scanf("%d", &N);for(int i = 1; i <= N; i++) {char str[200];char tmp = 0, max = 0;int count = 0, max_count = 0;scanf("%s", str);for(int j = 0; j < strlen(str); j++) {if(tmp == str[j]) count++;else {if(count > max_count) {max_count = count;max = tmp;}count = 1;tmp = str[j];}}if(count > max_count) {max_count = count;max = tmp;}printf("%c %d\n", max, max_count);}
}
http://www.lryc.cn/news/410391.html

相关文章:

  • 11day-C++list容器使用
  • docker 常用管理命令及数据备份
  • 前端开发:Vue2.0桌面组件库-Element
  • Java常见的面试二
  • 【Qt】QLCDNumberQProgressBarQCalendarWidget
  • C++ 代码实现局域网即时通信功能 (windows 系统 客户端)
  • 机器人阻抗控制实现方法及其存在的科学问题
  • 解决:xxx.xxx/res/modules/.ds_store: error: the file name must end with .xml 问题
  • EEtrade:区块链技术的五大应用场景
  • DAO、DPO、DTO、POJO、VO、BO、EBO
  • 数据库期末复习
  • pyinstaller带浏览器一起打包playwright 独立运行exe
  • docker添加容器服务所需字体
  • Java面试八股之Spring AOP 和 AspectJ AOP 的区别
  • Java人力资源招聘社会校招类型招聘系统PC端
  • C# 知识点总结
  • 【ffmpeg命令入门】视频的旋转与翻转
  • 学懂C语言(二十五):深入理解 C语言结构体 位域 的概念
  • LLM推理优化——KV Cache篇(百倍提速)
  • Linux进程--system
  • [Office] Word 特殊字符
  • 联想电脑怎么重装系统_联想电脑U盘重装win10详细图文教程
  • 前端开发者必备:揭秘谷歌F12调试的隐藏技巧!
  • vivado IP_REPO_PATHS
  • 前端代码混淆加密(使用Terser、WebpackObfuscator)
  • 【复读EffectiveC++24】条款24:若所有参数皆需类型转换,请为此采用non-member函数
  • Mac应用快速启动器:Alfred 5 for Mac 激活版
  • oracle语法介绍
  • Python IDLE修改JetBrains Mono字体教程
  • CCF编程能力等级认证GESP—C++1级—20240629