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

字符串摘要(C语言)

题目描述

给定一个字符串的摘要算法,请输出给定字符串的摘要值。

  1. 去除字符串中非字母的符号。
  2. 如果出现连续字符(不区分大小写),则输出:该字符(小写)+ 连续出现的次数。
  3. 如果是非连续的字符(不区分大小写),则输出:该字符(小写)+ 该字母之后字符串中出现的该字符的次数。
  4. 对按照以上方式表示后的字符串进行排序:字母和紧随的数字作为一组进行排序,数字大的在前,数字相同的,则按字母进行排序,字母小的在前。

输入

一行字符串,长度为[1,200]

输出

摘要字符串

示例一

输入
aabbcc

输出

a2b2c2

示例二

输入

bAaAcBb

输出

a3b2b2c0

说明

bAaAcBb:

第一个 b 非连续字母,该字母之后字符串中还出现了 2 次(最后的两个 Bb),所以输出 b2,

a 连续出现 3 次,输出 a3,

c 非连续,该字母之后字符串再没有出现过 c,输出 c0

Bb 连续 2 次,输出 b2

对 b2a3c0b2 进行排序,最终输出 a3b2b2c0

代码

#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>// 定义一个结构体,用于存储字符及其出现的次数
struct Letter {char name;int count;
};// 自定义比较函数,用于对字母及其数量进行排序
int compare(const void *a, const void *b) {struct Letter *letterA = (struct Letter *)a;struct Letter *letterB = (struct Letter *)b;// 如果字母出现次数相同,则按字母字典序降序排列if (letterA->count == letterB->count) {return letterA->name - letterB->name;}// 否则按字母出现次数降序排列return letterB->count - letterA->count;
}int main() {char inputStr[1000];// 读取一行输入字符串fgets(inputStr, sizeof(inputStr), stdin);// 创建一个过滤后的字符串数组,只包含字母char filteredStr[1000];int filteredStrIdx = 0;for (int i = 0; inputStr[i] != '\0'; i++) {char ch = inputStr[i];if (isalpha(ch)) { // 检查字符是否为字母filteredStr[filteredStrIdx++] =tolower(ch); // 转换为小写并添加到过滤后的字符串中}}filteredStr[filteredStrIdx] = '\0'; // 结束过滤后字符串// 初始化计数器和当前字符变量int count = 1;char currentChar = filteredStr[strlen(filteredStr) - 1];// 创建一个存储字母及其数量的结构体数组struct Letter *charList =(struct Letter *)malloc(sizeof(struct Letter) * strlen(filteredStr));int charListIdx = 0;// 初始化一个大小为26的数组,记录每个字母在剩余字符串中的出现次数int charCountMap[26] = {0};// 遍历过滤后的字符串,计算连续或非连续字符的出现次数for (int i = strlen(filteredStr) - 2; i >= 0; i--) {char ch = filteredStr[i];if (currentChar == ch) {count++; // 相同字符,增加计数} else {// 计算非连续字符或结束遍历时该字符的总出现次数if (count == 1) {count += charCountMap[currentChar] - 1;charCountMap[currentChar] = count + 1;} else {charCountMap[currentChar] = count;}// 将当前字符及其出现次数存入结构体数组struct Letter letter;letter.name = currentChar;letter.count = count;charList[charListIdx++] = letter;currentChar = ch;count = 1;}// 处理最后一个字符(无需检查下一个字符)if (i == 0) {if (count == 1) {count += charCountMap[currentChar] - 1;}struct Letter letter;letter.name = currentChar;letter.count = count;charList[charListIdx++] = letter;}}// 对结构体数组按照自定义比较函数进行排序qsort(charList, charListIdx, sizeof(struct Letter), compare);// 创建结果字符串数组,并将排序后的字符及其出现次数转换为输出格式char result[1000];int resultIdx = 0;for (int i = 0; i < charListIdx; i++) {result[resultIdx++] = charList[i].name;result[resultIdx++] = '0' + charList[i].count; // 将数字转换为字符形式}result[resultIdx] = '\0'; // 结束结果字符串// 输出摘要字符串printf("%s\n", result);// 释放内存free(charList);return 0;
}

相关文章:

字符串摘要(C语言)

题目描述 给定一个字符串的摘要算法&#xff0c;请输出给定字符串的摘要值。 去除字符串中非字母的符号。如果出现连续字符&#xff08;不区分大小写&#xff09;&#xff0c;则输出&#xff1a;该字符&#xff08;小写&#xff09; 连续出现的次数。如果是非连续的字符&…...

Linux进一步研究权限-----------ACL使用

一、使用情况 1.1、场景: 某个大公司&#xff0c;在一个部门&#xff0c;有一个经理和手下有两个员工&#xff0c;在操控一个Linux项目,项目又分为三期做&#xff0c;然而一期比较重要&#xff0c;经理带着员工做完了&#xff0c;公司就觉得技术难点已经做完攻克了&#xff0…...

剪辑视频调色软件有哪些 剪辑视频软件哪个最好 剪辑视频怎么学 剪辑视频的方法和步骤 会声会影2024 会声会影视频制作教程

看了很多调色教程&#xff0c;背了一堆调色参数&#xff0c;可最终还是调不出理想的效果。别再怀疑自己了&#xff0c;不是你的剪辑技术不行&#xff0c;而是剪辑软件没选对。只要掌握了最基本的调色原理&#xff0c;一款适合自己的视频剪辑软件是很容易出片的。 有关剪辑视频…...

【Linux进阶之路】Socket —— “UDP“ “TCP“

文章目录 一、再识网络1. 端口号2. 网络字节序列3.TCP 与 UDP 二、套接字1.sockaddr结构2.UDP1.server端1.1 构造函数1.2 Init1.3 Run 2.客户端1.Linux2.Windows 3.TCP1. 基本接口2. 客户端3. 服务端1.版本12.版本23.版本34.版本4 三、守护进程尾序 一、再识网络 1. 端口号 在…...

一些用 GPT 翻译的计算机科学/人工智能 PDF 讲义

3D成像.pdf3D成像技术.pdf3D点云分析.pdfAAAI 2019 笔记.pdfCMU 10.708 概率图模型讲义.pdfCMU 15-312 编程语言基础讲义.pdfCMU 15-411 编译器设计讲义.pdfCMU 15-819 同伦类型论讲义.pdfCMU 15-819O 程序分析讲义.pdfCUNY CSci335 软件设计与分析 3 讲义.pdfDixie IT4500 信息…...

重大更新:GPT-4 API 现全面向公众开放!

重大更新&#xff1a;GPT-4 API 现全面向公众开放&#xff01; 在 AIGC&#xff08;人工智能生成内容&#xff09;领域内&#xff0c;我们一直致力于跟踪和分析如 OpenAI、百度文心一言等大型语言模型&#xff08;LLM&#xff09;的进展及其在实际应用中的落地情况。我们还专注…...

【Python笔记-设计模式】对象池模式

一、说明 用于管理对象的生命周期&#xff0c;重用已经创建的对象&#xff0c;从而减少资源消耗和创建对象的开销 (一) 解决问题 主要解决频繁创建和销毁对象所带来的性能开销问题。如数据库连接、线程管理、网络连接等&#xff0c;对象的创建和销毁成本相对较高&#xff0c…...

反序列化 [NPUCTF2020]ReadlezPHP1

打开题目 直接查看源代码 打开源代码发现了个./time.php?source 访问一下 审计代码&#xff1a; 现存在反序列化语句&#xff1a;$ppp unserialize($_GET["data"]);和执行漏洞&#xff1a;echo $b($a); 发现在__destruct()方法里面有 echo $b($a); 这个是php的…...

AI技术那些事儿:揭开潜伏在你生活中的高科技小能手

你有没有发现&#xff0c;现在的生活里有些“看不见”的聪明家伙&#xff0c;它们时时刻刻在帮咱们忙活呢&#xff1f;从早上用语音命令打开窗帘、播报新闻&#xff0c;到晚上喊一声关灯睡觉&#xff0c;这些都离不开人工智能&#xff08;简称AI&#xff09;的助攻。今天咱就掰…...

使用向量数据库pinecone构建应用06:日志系统异常检测 Anomaly Detection

Building Applications with Vector Databases 下面是这门课的学习笔记&#xff1a;https://www.deeplearning.ai/short-courses/building-applications-vector-databases/ Learn to create six exciting applications of vector databases and implement them using Pinecon…...

抽象工厂模式 Abstract Factory

1.模式定义: 提供一个创建一系列相关或互相依赖对象的接口&#xff0c;而无需指定它们具体的类 2. 应用场景: 程序需要处理不同系列的相关产品&#xff0c;但是您不希望它依赖于这些产品的 具体类时&#xff0c; 可以使用抽象工厂 3.优点: 1.可以确信你从工厂得到的产品彼…...

掌握 Android 中的 RecyclerView 优化

掌握 Android 中的 RecyclerView 优化 一、RecyclerView Pool以及何时使用它二、onCreateViewHolder 和 onBindViewHolder三、优化 RecyclerView 的不同方法四、视图无效与请求布局五、ViewHolder模式六、默认的废料和脏视图类型七、结论 RecyclerView 是 Android 中一个功能强…...

Android platform tool中d8.bat不生效

d8.bat因找不到java_exe文件&#xff0c;触发EOF d8.bat中之前代码为&#xff1a; set java_exe if exist "%~dp0..\tools\lib\find_java.bat" call "%~dp0..\tools\lib\find_java.bat" if exist "%~dp0..\..\tools\lib\find_java.bat" …...

WSL安装Ubuntu22.04,以及深度学习环境的搭建

安装WSL 安装 WSL 2 之前&#xff0c;必须启用“虚拟机平台”可选功能。 计算机需要虚拟化功能才能使用此功能。 以管理员身份打开 PowerShell 并运行&#xff1a; dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart下载 Linux 内核更…...

【PTA|选择题|期末复习】结构体

2-1 For the following declarations,assignment expression_is not correct. struct Student {long num;char name[28];}st1,st2{101,"Tom"},*p&st1; 〇 A.st1 st2 ◎ B.p->name st2.name O C p->num st2.num 〇 D,*pst2 2-2 下面定义结构变量的语…...

Video generation models as world simulators-视频生成模型作为世界模拟器

原文地址&#xff1a;Video generation models as world simulators 我们探索在视频数据上进行大规模生成模型的训练。具体来说&#xff0c;我们联合训练文本条件扩散模型&#xff0c;同时处理不同持续时间、分辨率和长宽比的视频和图像。我们利用一个在视频和图像潜在编码的时…...

高刷电竞显示器 - HKC VG253KM

今天给大家分享一款高刷电竞显示器 - HKC VG253KM。 高刷电竞显示器 - HKC VG253KM源于雄鹰展翅翱翔的设计灵感&#xff0c;严格遵循黄金分割比例的蓝色点晴线条&#xff0c;加上雾面工艺及高低起伏错落有致的线条处理&#xff0c;在VG253KM的背部勾勒出宛若大鹏展翅的鹰翼图腾…...

nginx-------- 高性能的 Web服务端 (三) 验证模块 页面配置

一、http设置 1.1 验证模块 需要输入用户名和密码 htpasswd 此命令来自于 httpd-tools 包&#xff0c;如果没有安装 安装一下即可 也可以安装httpd 直接yum install httpd -y 也一样 第一次生成文件htpasswd -c 文件路径 姓名 交互式生成密码 htpasswd -bc 文…...

Kafka是如何防止消息丢失的

Kafka通过一系列机制来防止消息丢失&#xff0c;主要包括以下几个方面&#xff1a; 生产者端&#xff08;Producer&#xff09;保证&#xff1a; 同步发送&#xff1a;生产者默认是异步发送消息的&#xff0c;但如果希望保证消息不丢失&#xff0c;可以选择将异步发送改为同步…...

[工具探索]VSCode介绍和进阶使用

相比较GoLand、PhpStorm、PyCharm、WebStorm的重量级内存占用&#xff0c;从Windows系统来&#xff0c;各种卡死&#xff0c;换到MacOS倒不会卡死&#xff0c;但是内存占用太多&#xff0c;影响体验&#xff0c;决定换到VSCode。当然这个过程需要适应过渡期&#xff0c;旧伙计都…...

4步攻克Fiji在macOS系统的启动难题:从诊断到长效维护的全方位解决方案

4步攻克Fiji在macOS系统的启动难题&#xff1a;从诊断到长效维护的全方位解决方案 【免费下载链接】fiji A "batteries-included" distribution of ImageJ :battery: 项目地址: https://gitcode.com/gh_mirrors/fi/fiji 问题定位&#xff1a;精准识别Fiji启动…...

OpenShamrock:零基础搭建QQ智能交互系统完全指南

OpenShamrock&#xff1a;零基础搭建QQ智能交互系统完全指南 【免费下载链接】OpenShamrock A Bot Framework based on Xposed with OneBot11 项目地址: https://gitcode.com/gh_mirrors/op/OpenShamrock 核心价值解析&#xff1a;为什么选择OpenShamrock构建QQ机器人&a…...

Python并发安全性重构白皮书(GIL禁用场景下的原子操作黄金标准)

第一章&#xff1a;Python并发安全性重构白皮书&#xff08;GIL禁用场景下的原子操作黄金标准&#xff09;当通过 PyPy、Cython&#xff08;启用 nogil&#xff09;、或 Python 3.12 的实验性子解释器&#xff08;PEP 684&#xff09;等路径绕过全局解释器锁&#xff08;GIL&am…...

终极窗口置顶指南:如何让重要窗口永远不被遮挡

终极窗口置顶指南&#xff1a;如何让重要窗口永远不被遮挡 【免费下载链接】AlwaysOnTop Make a Windows application always run on top 项目地址: https://gitcode.com/gh_mirrors/al/AlwaysOnTop AlwaysOnTop 是一个轻量级的 Windows 应用程序&#xff0c;它能够将任…...

飞机上吸烟还叫嚣“憋得难受”?

坐飞机最怕遇到什么&#xff1f;不是延误&#xff0c;也不是颠簸&#xff0c;而是那种不拿一飞机人性命当回事的“巨婴”旅客。就在昨天&#xff08;3月29日&#xff09;&#xff0c;四川航空一架从成都飞往尼泊尔加德满都的航班上&#xff0c;就出了这么一档子事儿。一位“老烟…...

DLSS Swapper实战手册:游戏性能调优与版本管理深度解析

DLSS Swapper实战手册&#xff1a;游戏性能调优与版本管理深度解析 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 还在为游戏中的DLSS版本过时而烦恼吗&#xff1f;DLSS Swapper为您提供了一套完整的解决方案&#xf…...

R语言实战:利用compareGroups包高效生成临床研究三线表(Table1)

1. 为什么临床研究离不开Table1三线表 在医学论文和临床研究报告中&#xff0c;Table1三线表几乎是标配。我第一次投稿时&#xff0c;审稿人直接指出"缺少规范的基线特征表"&#xff0c;这才意识到这个表格的重要性。Table1的核心作用是展示研究人群的基线特征&#…...

微信聊天记录永久保存与深度分析:WeChatMsg让你的数字记忆不再流失

微信聊天记录永久保存与深度分析&#xff1a;WeChatMsg让你的数字记忆不再流失 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trend…...

GLM-OCR在跨境电商中的应用:多语言商品说明书OCR→自动翻译预处理

GLM-OCR在跨境电商中的应用&#xff1a;多语言商品说明书OCR→自动翻译预处理 1. 项目概述与背景 跨境电商卖家经常面临一个共同难题&#xff1a;来自不同国家的商品说明书语言各异&#xff0c;手动翻译不仅耗时耗力&#xff0c;还容易出错。传统OCR工具虽然能识别文字&#…...

AugmentCode无限续杯插件:突破登录限制的自动化解决方案

AugmentCode无限续杯插件&#xff1a;突破登录限制的自动化解决方案 【免费下载链接】free-augment-code AugmentCode 无限续杯浏览器插件 项目地址: https://gitcode.com/gh_mirrors/fr/free-augment-code 痛点解析&#xff1a;开发者的账户管理困境 在软件开发与测试…...