【C++】字符串 1478 - 出现次数最多的小写字母 1475 - 字符串对比 1098 - 判断是否构成回文 1102 - 字符串中的空格移位

文章目录

  • 问题一:1478 - 出现次数最多的小写字母
  • 问题二:1475 - 字符串对比
  • 问题三:1098 - 判断是否构成回文
  • 问题四:1102 - 字符串中的空格移位
  • 五、感谢

问题一:1478 - 出现次数最多的小写字母

类型:字符串


题目描述:

输入一个由小写字母组成的字符串(字符数量≤100 ),输出出现次数最多的小写字母。
注意:如果有多个小写字母出现的次数一样多,则输出ASCII码值最大的那个字母。

输入:

一个字符串。

输出:

出现次数最多的小写字母。

样例:

输入:

aaabbbbbbbbbcdxs

输出:

b

1.分析问题

  1. 已知:一个字符串。
  2. 未知:出现次数最多的小写字母。
  3. 关系:统计。

2.定义变量

  • 定义字符数组s用于存储输入的字符串,整型数组a用于统计26个小写字母出现的次数,变量m用于记录最大出现次数,字符c用于存储出现次数最多的字符
string s;
int a[26]={0}; 
int m = 0;
char c;

3.输入数据

  • 从标准输入读取一行字符串,存放在字符数组s中
   getline(cin,s);// 遍历字符串s中的每一个字符(假设只包含小写字母)for (int i = 0; i < s.length(); i++) {// 将当前字符转换为字母索引(ASCII码减去97,因为'a'的ASCII码是97),然后增加对应索引位置的计数器a[s[i] - 97]++;}

4.数据计算

  • 遍历计数器数组a,当遇到计数器不为0且大于或等于已知的最大出现次数时,更新最大出现次数m以及对应的字符c。
// 遍历整个计数器数组a,查找出现次数最多的字符for (int i = 0; i < 26; i++) {// 如果当前计数器不为0并且大于或等于已知的最大出现次数,则更新最大出现次数以及对应的字符if (a[i] != 0 && a[i] >= m) {m = a[i];c = (char)(i + 97);}}  

5.输出结果

  • 输出变量c,即出现次数最多的字符。
    cout << c;return 0; // 程序正常结束,返回0

完整代码如下:

#include <bits/stdc++.h> // 引入C++标准库头文件,包含了大部分常用的输入输出和数据处理函数
using namespace std; // 使用std命名空间int main() {// 定义字符数组s用于存储输入的字符串,整型数组a用于统计26个小写字母出现的次数,变量m用于记录最大出现次数,字符c用于存储出现次数最多的字符	string s;int a[26]={0}; int m = 0;char c;// 从标准输入读取一行字符串,存放在字符数组s中getline(cin,s);// 遍历字符串s中的每一个字符(假设只包含小写字母)for (int i = 0; i < s.length(); i++) {// 将当前字符转换为字母索引(ASCII码减去97,因为'a'的ASCII码是97),然后增加对应索引位置的计数器a[s[i] - 97]++;}// 遍历整个计数器数组a,查找出现次数最多的字符for (int i = 0; i < 26; i++) {// 如果当前计数器不为0并且大于或等于已知的最大出现次数,则更新最大出现次数以及对应的字符if (a[i] != 0 && a[i] >= m) {m = a[i];c = (char)(i + 97);}}  // 输出出现次数最多的字符cout << c;return 0; // 程序正常结束,返回0
}

问题二:1475 - 字符串对比

类型:字符串、蓝桥杯


题目描述:

给定两个仅由大写字母或小写字母组成的字符串(长度介于1到100之间),它们之间的关系是以下4种情况之一:

  • 1:两个字符串长度不等。比如 Beijing 和 Hebei
  • 2:两个字符串不仅长度相等,而且相应位置上的字符完全一致(区分大小写),比如 Beijing 和 Beijing
  • 3:两个字符串长度相等,相应位置上的字符仅在不区分大小写的前提下才能达到完全一致(也就是说,它并不满足情况2)。比如 beijing 和 BEIjing
  • 4:两个字符串长度相等,但是即使是不区分大小写也不能使这两个字符串一致。比如 Beijing 和 Nanjing
    编程判断输入的两个字符串之间的关系属于这四类中的哪一类,给出所属的类的编号。

输入:

包括两行,每行都是一个字符串。

输出:

仅有一个数字,表明这两个字符串的关系编号 。

样例:

输入:

BEIjing 
beiJing 

输出:

3

在这里插入图片描述


1.分析问题

  1. 已知:两个字符串。
  2. 未知:这两个字符串的关系。
  3. 关系:字符比较。

2.定义变量

	//二、数据定义 string s1,s2;

3.输入数据

  • 通过getline(cin, s1)和getline(cin, s2)分别获取用户输入的两行字符串。
	//三、数据输入 getline(cin,s1);getline(cin,s2);

4.数据计算

  • 使用transform函数配合::tolower将s1和s2中的所有字符转换为小写并存入lowerS1和lowerS2中。
	string lowerS1 = s1; // 创建一个新的字符串lowerS1作为s1的小写副本string lowerS2 = s2; // 创建一个新的字符串lowerS2作为s2的小写副本transform(lowerS1.begin(), lowerS1.end(), lowerS1.begin(), ::tolower); // 将lowerS1中的所有字符转换为小写transform(lowerS2.begin(), lowerS2.end(), lowerS2.begin(), ::tolower); // 将lowerS2中的所有字符转换为小写
  • 根据字符串长度和比较结果输出对应的数字。
  • 如果s1和s2长度不相等,则输出1。
  • 如果s1和s2长度相等且内容完全相同(区分大小写),则输出2。
  • 如果s1和s2长度相等,内容虽不完全相同但将所有字符转为小写后相等,则输出3。
  • 若以上条件都不满足,则输出4。
   if(s1.length()==s2.length()){if(s1==s2){cout<<2;}else if(lowerS1 == lowerS2){cout<<3;}else{cout<<4;}}else{cout<<1;}

5.输出结果

	//五、输出结果 return 0;

完整代码如下:

#include <bits/stdc++.h> // 包含所有标准库头文件
using namespace std; // 使用标准命名空间int main() {// 一、分析问题// 已知:有两个字符串s1和s2// 未知:两个字符串的关系(长度是否相等,内容是否相同或忽略大小写后是否相同)// 关系:根据特定规则输出对应的数字代码// 二、数据定义 string s1, s2; // 定义两个字符串变量用于存储输入的字符串// 三、数据输入 getline(cin, s1); // 从标准输入读取一行并存入s1(直到遇到换行符)getline(cin, s2); // 同样方法读取第二行并存入s2// 四、数据计算 string lowerS1 = s1; // 创建一个新的字符串lowerS1作为s1的小写副本string lowerS2 = s2; // 创建一个新的字符串lowerS2作为s2的小写副本transform(lowerS1.begin(), lowerS1.end(), lowerS1.begin(), ::tolower); // 将lowerS1中的所有字符转换为小写transform(lowerS2.begin(), lowerS2.end(), lowerS2.begin(), ::tolower); // 将lowerS2中的所有字符转换为小写if (s1.length() == s2.length()) { // 如果字符串长度相等if (s1 == s2) { // 若内容完全相同(区分大小写)cout << 2; // 输出数字2} else if (lowerS1 == lowerS2) { // 若内容不完全相同但忽略大小写后相等cout << 3; // 输出数字3} else { // 其他情况,即长度相等但内容既不全同也不全小写相等cout << 4; // 输出数字4}} else { // 若字符串长度不相等cout << 1; // 输出数字1}// 五、输出结果 return 0; // 程序执行成功结束,返回值为0
}

问题三:1098 - 判断是否构成回文

类型:字符串


题目描述:

输入一串字符,字符个数不超过100 ,且以 . 结束。
判断它们是否构成回文,如果不含 . 能构成回文输出 TRUE,否者输出 FALSE。

输入:

输入只有一行,包括一串字符。(测试数据不含空格)。

输出:

输出只有一行,TRUE 或者 FALSE 。

样例:

输入:

12321.

输出:

TRUE

在这里插入图片描述


1.分析问题

  1. 已知:一串字符。
  2. 未知:判断它们是否构成回文。
  3. 关系:重新组装。

2.定义变量

  • 定义两个字符串变量 ins 和 outs。ins 用于存储用户输入的字符序列,outs 用于存放反转后的字符序列。
	//二、数据定义 string ins,outs;

3.输入数据

  • 使用 getline(cin, ins, ‘.’) 从标准输入接收字符直到遇到句点为止,并将这些字符存入 ins 中。
	//三、数据输入 getline(cin,ins,'.');

4.数据计算

  • 通过一个从后向前遍历 ins 的循环,逐个将 ins 中的字符添加到 outs 的末尾,这样 outs 就会储存 ins 的逆序字符串。
	//四、数据计算 for(int i=ins.length()-1;i>=0;i--){outs+=ins[i];}

5.输出结果

  • 比较 ins 和 outs 是否相等,如果相等则输出 “TRUE” 表示输入的是回文,否则输出 “FALSE” 表示不是回文。
  • 返回0表示程序执行成功且正常退出。
	//五、输出结果 if(ins==outs){cout<<"TRUE";}else{cout<<"FALSE";}return 0;	

完整代码如下:

#include <bits/stdc++.h> // 引入C++标准库的所有头文件(一般不推荐在实际项目中使用,应引入具体需要的头文件)
using namespace std; // 使用std命名空间int main() {// 一、分析问题// 已知:我们有一个输入字符串ins。// 未知:我们需要判断这个字符串是否为回文(正读和反读相同)。// 关系:通过反转输入字符串并进行比较来确定。// 二、数据定义 string ins, outs; // 定义两个字符串变量,ins用于存储用户输入的字符序列,outs将用于存放ins的逆序字符串// 三、数据输入 getline(cin, ins, '.'); // 从标准输入接收字符,直到遇到句点(.)为止,并存入ins变量中// 四、数据计算 for (int i = ins.length() - 1; i >= 0; i--) { // 从ins的末尾开始向前遍历每一个字符outs += ins[i]; // 将ins中的每个字符依次添加到outs字符串的末尾,从而实现逆转操作}// 五、输出结果 if (ins == outs) { // 比较原字符串ins与逆转后的字符串outs是否相等cout << "TRUE"; // 如果相等,说明ins是回文字符串,输出"TRUE"} else {cout << "FALSE"; // 否则,说明ins不是回文字符串,输出"FALSE"}return 0; // 程序执行成功结束,返回值为0
}

问题四:1102 - 字符串中的空格移位

类型:字符串。


题目描述:

输入一个字符串,将其中的所有空格都移到最前面,然后输出。

输入:

一个字符串。如:a□b□c(为了能看清空格,□代表一个空格,但实际测试数据中不用□表示空格)

输出:

空格全部移到了串前的字符串。如:□□abc

样例:

输入:

a b c

输出:

  abc

在这里插入图片描述


1.分析问题

  1. 已知:一个字符串。
  2. 未知:空格全部移到了串前的字符串。
  3. 关系:字符重组。

2.定义变量

  • s 用于存储用户输入的原始字符串,s1 用于存储原字符串中的空格字符,s2 用于存储原字符串中的非空格字符。
	//二、数据定义 string s,s1,s2;

3.输入数据

  • 通过 getline(cin, s) 从标准输入读取一行字符串(包括空格)存入变量 s。
	//三、数据输入 getline(cin,s);

4.数据计算

遍历字符串 s 的每一个字符:

  • 如果当前字符是空格,则将其添加到字符串 s1 中。
  • 否则,将当前字符添加到字符串 s2 中。
	//四、数据计算 for(int i=0;i<s.length();i++){if(s[i]==' '){s1+=s[i];}else{s2+=s[i];}}

5.输出结果

  • 遍历完成后,将包含所有空格的字符串 s1 和包含所有非空格字符的字符串 s2 进行拼接,并输出结果,此时空格已全部移动到了非空格字符的前面。
  • 程序执行完毕后返回0,表示程序正常结束。
	//五、输出结果 cout<<s1+s2;return 0;

完整代码如下:

#include<bits/stdc++.h>
using namespace std; // 使用std命名空间int main(){// 一、分析问题// 已知:一个字符串。// 未知:将原字符串中的所有空格移动到字符串前面的新字符串。// 关系:通过字符重组实现空格位置的改变。// 二、数据定义string s, s1, s2; // 定义三个字符串变量:// s 用于存储用户输入的原始字符串,// s1 用于存储原始字符串中的空格,// s2 用于存储原始字符串中的非空格字符// 三、数据输入getline(cin, s); // 从标准输入读取一行字符串,包括空格,存入变量s// 四、数据计算for(int i = 0; i < s.length(); i++){ // 遍历字符串s中的每个字符if(s[i] == ' '){ // 当前字符是空格s1 += s[i]; // 将空格添加到s1中} else {s2 += s[i]; // 否则(当前字符为非空格字符),将其添加到s2中}}// 五、输出结果cout << s1 + s2; // 输出拼接后的字符串,此时所有空格都在非空格字符之前return 0; // 程序执行成功返回0
}

五、感谢

如若本文对您的学习或工作有所启发和帮助,恳请您给予宝贵的支持——轻轻一点,为文章点赞;若觉得内容值得分享给更多朋友,欢迎转发扩散;若认为此篇内容具有长期参考价值,敬请收藏以便随时查阅。

每一次您的点赞、分享与收藏,都是对我持续创作和分享的热情鼓励,也是推动我不断提供更多高质量内容的动力源泉。期待我们在下一篇文章中再次相遇,共同攀登知识的高峰!

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/719104.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是杠杆?WeTrade众汇这样举例,大家都明白

杠杆是投资交易者一定要知道的一个金融术语。那么什么是杠杆呢?下面WeTrade众汇就用苹果进行举例&#xff0c;大家就都会明白&#xff0c;原来如此简单。 发挥我们投资者的想象&#xff0c;我们现在要进行一场苹果的买卖&#xff0c;能够赚钱的本质就是高买低卖&#xff0c;所…

【在巴厘岛学点印尼语】日常篇

BINTANG BIR 槟棠啤酒 今天不写代码&#xff0c;在巴厘岛休养&#xff0c;顺便聊点印尼语。 印尼语&#xff0c;Bahasa Indonesia&#xff0c;是印度尼西亚的官方语言&#xff0c;也即印尼化的马来语廖内方言&#xff0c;其变种包括 爪哇语&#xff08;岛民方言&#xff09; 等…

5.测试教程 - 进阶篇

文章目录 1.按测试对像划分1.1**界面测试**1.2**可靠性测试**1.3**容错性测试**1.4**文档测试**1.5**兼容性测试**1.6**易用性测试**1.7**安装卸载测试**1.8**安全测试**1.9**性能测试**1.10**内存泄漏测试** 2.按是否查看代码划分2.1黑盒测试(Black-box Testing)2.2白盒测试(W…

书生浦语全链路开源体系

推荐阅读论文 A Survey Of Large Language Models 书生浦语开源的模型 从模型到应用 书生浦语开源体系 书生万卷开源数据集 除此之外还有OpenDataLab国内数据集下载网站。 预训练框架InterLM-Train 微调框架XTuner 评测工具体系 国内外常见的大语言模型评测基准&#xff1a…

【JS 算法题: 将 json 转换为字符串】

题目简介 其实就是手撕 JSON.stringfy()。 算法实现 输入 原则上来说&#xff0c;输入的是一个 json 对象。但需要考虑到异常情况&#xff0c;即输入了其它类型的数据&#xff0c;比如&#xff1a;12, true, ‘abc’, [‘red’, ‘green’], null, undefined 等。 输出 …

【比较mybatis、lazy、sqltoy、mybatis-flex、easy-query操作数据】操作批量新增、分页查询(三)

orm框架使用性能比较 比较mybatis、lazy、sqltoy、mybatis-flex、easy-query操作数据 环境&#xff1a; idea jdk17 spring boot 3.0.7 mysql 8.0测试条件常规对象 orm 框架是否支持xml是否支持 Lambda对比版本mybatis☑️☑️3.5.4sqltoy☑️☑️5.2.98lazy✖️☑️1.2.4…

鸿蒙实战项目开发:【短信服务】

概述 本示例展示了电话服务中发送短信的功能。 样例展示 涉及OpenHarmony技术特性 网络通信 难度级别 中级 基础信息 使用ohos.telephony.sms接口展示了电话服务中发送短信的功能。 效果预览 新建联系人首页短信页 使用说明&#xff1a; 首页点击创建联系人&am…

每日一练:LeeCode-203. 移除链表元素 【链表+虚拟头结点】

每日一练&#xff1a;LeeCode-203. 移除链表元素 【链表虚拟头结点】 思路设置虚拟头结点 本文是力扣 每日一练&#xff1a;LeeCode-203. 移除链表元素 【链表虚拟头结点】 学习与理解过程&#xff0c;本文仅做学习之用&#xff0c;对本题感兴趣的小伙伴可以出门左拐LeeCode-20…

自然语言处理(NLP)中NER如何从JSON数据中提取实体词的有效信息

专栏集锦&#xff0c;大佬们可以收藏以备不时之需&#xff1a; Spring Cloud 专栏&#xff1a;http://t.csdnimg.cn/WDmJ9 Python 专栏&#xff1a;http://t.csdnimg.cn/hMwPR Redis 专栏&#xff1a;http://t.csdnimg.cn/Qq0Xc TensorFlow 专栏&#xff1a;http://t.csdni…

机器学习-面经(part3)

5. 正则化 5.0 手推L1,L2 5.1 什么是正则化,如何理解 定义: 在损失函数后加上一个正则化项(惩罚项),其实就是常说的结构风险最小化策略,即损失函数 加上正则化。一般模型越复杂,正则化值越大。 正则化项是用来对模型中某些参数进行约束,正则化的一般形式如下: 第一项是…

吴恩达《机器学习》学习笔记

本笔记资料来源于 http://www.ai-start.com/ml2014/&#xff0c;该笔记来自于https://blog.csdn.net/dadapongi6/article/details/105668394&#xff0c;看了忘&#xff0c;忘了看&#xff0c;再看一遍。 时间统计&#xff1a;2024.2.29 5个番茄钟&#xff0c;从week1开始&…

【PyTorch][chapter 19][李宏毅深度学习]【无监督学习][ GAN]【理论】

前言&#xff1a; 生成对抗网络&#xff08;Generative Adversarial Nets&#xff0c;GAN&#xff09;是一种基于对抗学习的深度生成模型。 2014年&#xff0c;蒙特利尔博士 lan Goodfellow 发表了论文《Generative Adaversarial Networks》&#xff0c; 一经提出便成为了学术…

Python CGI编程

文章目录 什么是CGICGI架构Web服务器支持及配置CGI程序示例CGI环境变量GET和POST方法GET方法POST方法区别注意事项 使用POST方法传递数据1. 创建HTML表单2. 编写CGI脚本3. 配置服务器4. 提交表单5. 服务器处理请求注意事项 通过CGI程序传递checkbox数据创建HTML表单编写CGI脚本…

二维码门楼牌管理系统技术服务:门牌编设规则详解

文章目录 前言一、门牌编设规则解读二、区间编号与分段编号策略三、多出入口建筑物的门牌编设 前言 随着城市化的快速推进&#xff0c;门楼牌管理成为城市管理中不可或缺的一环。二维码门楼牌管理系统的引入&#xff0c;不仅提升了管理的效率&#xff0c;也为市民提供了更为便…

波奇学Liunx:信号的产生,保存,处理

信号的产生&#xff0c;信号的保存&#xff0c;信号的处理 在操作系统中进程接受到信号会保存&#xff0c;产生 进程必须识别和能够处理信号&#xff0c;处理信号是进程的内置功能 进程收到信号时不一定会立即执行&#xff0c;所以进程必然有一套识别&#xff0c;保存&#xff…

(1)预处理

我们需要的文件结构如上 main.cpp add.h add.cpp add.h 这里使用riscv的工具链编译为.i文件&#xff0c;需要使用-E&#xff0c;就是只进行预处理&#xff0c;我们可以得到两个.i文件即main.i和add.i main.i 这里看到main.i里头文件全部替换&#xff0c;然后多了三万多行 所以…

4G/5G执法记录仪、智能安全帽走国标GB28181接入海康、宇视等大平台,也可走平台与平台对接,以下级平台级联到上级大平台

AIoT万物智联&#xff0c;智能安全帽生产厂家&#xff0c;执法记录仪生产厂家&#xff0c;智能安全帽、智能头盔、头盔记录仪、执法记录仪、智能视频分析/边缘计算AI盒子、车载DVR/NVR、布控球、智能眼镜、智能手电、无人机4G补传系统等统一接入大型融合通信可视指挥调度平台VM…

Vue3和ElementPlus封装table组件

最近学习vue3.2并自己在写一个项目&#xff0c;然后发现好几个页面都是列表页&#xff0c;重复写table和column也是觉得累&#xff0c;学习的项目列表页不算多&#xff0c;要是公司项目就不一样了&#xff0c;所以就想着自己封装一个table组件&#xff0c;免去大量重复工作和co…

滑动窗口

题目 思路 对于一个数组区间的最值&#xff0c;可以开辟一个队列记录&#xff08;当然这里不能叫队列只是和队列相似&#xff0c;习惯性叫法)。 每个区间的最值等于队首元素。扫描数组时&#xff0c;如果该元素大于队尾元素&#xff08;取最大值时&#xff09;将该队尾元素出队…

DM数据库学习之路(二十)DM8基于主备集群技术的两地三中心集群部署及测试(全网最详细)

DM两地三中心介绍 摘要 金融行业对数据的可靠性和连续性有着极其严格的要求,任何数据丢失或服务中断都可能导致严重的经济损失。针对这一问题,基于达梦主备集群技术的两地三中心解决方案能够切实有效解决业务数据的可靠性和连续性需求。该方案通过构建两个数据中心和一个灾备…