【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,一经查实,立即删除!

相关文章

oracle基础体系

一、 Oracle数据库服务器 数据库在各个行业都会有使用到&#xff1b;其实&#xff0c;我们平时无论是在与客户沟通或者交流中&#xff0c;所说的Oracle数据库是指Oracle数据库服务器&#xff08;Oracle Server&#xff09;&#xff0c;它由Oracle实例&#xff08;Oracle Instan…

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

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

二十篇esp3454

jfjjfj from machine import I2C,Pin from ssd1306 import SSD1306_I2C i2c I2C(sdaPin(“Y8”), sclPin(“Y6”)) oled SSD1306_I2C(128, 64, i2c, addr0x3c) oled.text(“Hello World!”, 0, 0) oled.text(“MicroPython”, 0, 20) oled.text(“By 01Studio”, 0, 50) oled…

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

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

如何选择适合电商的WordPress主题模板?

选择适合电商的WordPress主题模板时&#xff0c;首先应考虑主题模板是否与WooCommerce兼容。WooCommerce是WordPress中一个强大的电商插件&#xff0c;能够帮助用户实现在线电子商务销售或产品展示。因此&#xff0c;选择一个与WooCommerce高度兼容的主题模板至关重要。 其次&…

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…

部署kubernetes-dashboard改成http免密登录

原始链接地址 https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml 修改Service端口 增加80端口&#xff0c;改成http访问 修改前: spec:ports:- port: 443targetPort: 8443selector:k8s-app: kubernetes-dashboard修改后&#xff…

snakemake: 基本语法知识点

Snakemake 使用一种基于 Python 的语法来定义工作流&#xff0c;允许用户编写规则&#xff08;rules&#xff09;来指定数据分析流程中的各个步骤。以下是一些基础语法知识点&#xff0c;帮助你理解和使用 Snakemake。 1. 规则&#xff08;Rules&#xff09; 规则是 Snakemak…

【ROS源码阅读】

项目需要研读ROS源码&#xff0c;这其中碰到的一些问题记录一下&#xff1a; 源码编译过程 (1) 在ubuntu 18.04 上安装ROS melodic的版本。 (2) 下载源码&#xff0c; ROS源码链接&#xff1a; https://github.com/ros/ros_comm/tree/melodic-devel/ros_comm(3) 编译 例如想…

图像增强预处理对于深度学习训练的提高有帮助吗?

答案&#xff1a;图像增强预处理对于深度学习训练非常有帮助&#xff0c;它可以显著提高模型的性能和泛化能力。 图像增强包括许多技术&#xff0c;可以通过各种方法改进图像数据&#xff0c;使其更适合训练深度学习模型。 可以增加数据集的多样性&#xff0c;减少模型对特定图…

书生浦语全链路开源体系

推荐阅读论文 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…

Nginx 和Tomcat比较

Nginx和Tomcat是两种不同的技术&#xff0c;它们在应用场景、性能、动态处理能力等方面有所区别&#xff1a; 应用场景 Nginx通常用作静态内容服务器或代理服务器&#xff0c;可以将外部请求转发给其他应用服务器&#xff0c;如Tomcat、Django等。而Tomcat则主要用作应用服…

机器学习-面经(part3)

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

固件和内核驱动

驱动折腾小记 很多人更新了内核&#xff0c;但是自己的外设依然没有驱动&#xff0c;是因为仅仅更新内核是不够的&#xff0c;还需要更新固件。 什么是固件&#xff1f; 在许多设备能够与操作系统通信之前&#xff0c;它们必须首先使用设备制造商提供的“固件”进行初始化。…

实施工程师常遇技术问题

文章目录 一、对与一个项目&#xff0c;你认为项目的里程碑有哪几个&#xff1f;二、Tomcat服务器与Resin服务器的区别2.1、开发商和许可证&#xff1a;2.2、部署和配置&#xff1a;2.3、功能和扩展性&#xff1a;2.4、社区和生态系统&#xff1a; 三、版本控制工具SVN与Git的区…