【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.hqwc.cn/news/509617.html

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

相关文章

1.1计算机硬件基础知识

1.计算机硬件系统的组成 1.1运算器 累加寄存器是一个工作区&#xff0c;用来存放运算的数据以及结果的。 124 1从内存中读取出&#xff0c;放入累加寄存器&#xff0c;然后再从内存中将2读取出来&#xff0c;也放入累加寄存器&#xff0c;然后再由算术逻辑单元进行运算&#xf…

nginx-图片模块

./configure --with-http_image_filter_module location / {root html;index index.html index.htm;if ($arg_w "") {set $arg_w -;}if ($arg_h "") {set $arg_h -;}image_filter resize $arg_w $arg_h;image_filter_jpeg_quality 95; } 访问: 1234…

Android Studio如何修改JDK版本和获知使用的Java版本

嗨&#xff0c;各位小伙伴们&#xff0c;我是你们的好朋友咕噜铁蛋&#xff01;今天&#xff0c;我们要来聊一聊关于《Android Studio如何修改JDK版本和获知使用的Java版本》这个话题。掌握如何修改JDK版本以及了解当前使用的Java版本是非常重要的一项技能&#xff0c;它将帮助…

S7-1500 PLC装载存储器已使用容量变红的解决方法示例

S7-1500 PLC装载存储器已使用容量变红的解决方法示例 1.如何在线查看S7-1200/1500 PLC的内部存储区的使用情况? 答:在项目树中展开PLC程序打开“在线和诊断”,点击“转至在线”使TIA PORTAL在线连接到S7-1200 CPU,在“存储器”标签查看CPU内存使用情况,如下图所示: 2.如何…

1_SQL

文章目录 前端复习SQL数据库的分类关系型数据库非关系型数据库&#xff08;NoSQL&#xff09; 数据库的构成软件架构MySQL内部数据组织方式 SQL语言登录数据库数据库操作查看库创建库删除库修改库 数据库中表的操作选择数据库创建表删除表查看表修改表 数据库中数据的操作添加数…

使用modinfo对比内核版本号

加载内核&#xff0c;出现版本不一样 cat /proc/verison查看内核板本 模块版本&#xff1a;显示模块的版本号。 $ modinfo [OPTIONS] [MODULE] 参数说明-F, --field <field>: 指定要显示的字段&#xff0c;可以使用逗号分隔多个字段。-k, --kernel <kernel>: 指定…

力扣hot100:42.接雨水

什么时候能用双指针&#xff1f; &#xff08;1&#xff09;对撞指针&#xff1a; ①两数和问题中可以使用双指针&#xff0c;先将两数和升序排序&#xff0c;可以发现规律&#xff0c;如果当前两数和大于target&#xff0c;则右指针向左走。 ②接雨水问题中&#xff0c;左边最…

简历中自我评价,是否应该删掉?

你好&#xff0c;我是田哥 年后&#xff0c;不少朋友已经开始着手准备面试了&#xff0c;准备面试的第一个问题就是&#xff1a;简历。 写简历是需要一些技巧的&#xff0c;你的简历是要给面试官看&#xff0c;得多留点心。 很多简历上都会写自我评价/个人优势/个人总结等&…

实时抓取SKU商品属性详细信息API数据接口(淘宝,某音)

item_sku-获取sku详细信息 taobao.item_sku详细信息 API公共参数 请求地址: https://api-gw.onebound.cn/taobao/item_sku 名称类型必须描述keyString是调用key&#xff08;演示示例&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地…

python实现有限域GF(2^8)上的乘法运算

有限域GF(2^8)上的乘法运算可以看成多项式的乘法 5e转换成二进制为0101 1110&#xff0c;对应的多项式为x^6x^4x^3x^2x 3f转换成二进制为0011 1111&#xff0c;对应的多项式为x^5x^4x^3x^2x1 将这两个多项式相乘再模多项式x^8x^4x^3x1得到结果为1110 0101&#xff0c;转换为…

网络架构与组网部署——补充

5G网络架构的演进趋势 &#xff08;1&#xff09; MEC&#xff1a;多接入边缘计算。首先MEC可以实现5GC的功能&#xff0c;因为5GC是集中在机房中&#xff0c;所以当有MEC后&#xff0c;就可以把MEC下发到基站旁边&#xff0c;这样减少端到端的延时。便于实现5G中不同场景的实…

2020PAT--冬

The Closest Fibonacci Number The Fibonacci sequence Fn​ is defined by Fn2​Fn1​Fn​ for n≥0, with F0​0 and F1​1. The closest Fibonacci number is defined as the Fibonacci number with the smallest absolute difference with the given integer N. Your job…