1029 旧键盘 C++中find函数的使用

news/2024/4/27 12:54:39/文章来源:https://blog.csdn.net/pangyou3s/article/details/129230071

题目链接:

一、自己的想法:(弱化版双指针)

思路为用两个“指针”i, j分别指向原来字符串和实际输入字符串的第一个字符,然后判断i,j所指字符是否一致,若是则i, j同时++,若否则将i所指的字符存储进字符串c中,同时让i++.

第一遍代码:

#include <bits/stdc++.h>
using namespace std;
int main()
{string a, b, c;cin >> a >> b;int k = 0;int lena = a.size();for (int i = 0, j = 0; i < lena;){if (a[i] != b[j]){c[k++] = a[i];i++;}else {i++;j++;}}for (int j = 0; j < k - 1; ++j){for (int i = j + 1; i < k; ++i){if (toupper(c[i]) == toupper(c[j])) c[i] = '#';}}for (int i = 0; i < k; ++i){if (isdigit(c[i])) cout << c[i];else if (isalpha(c[i])) cout << (char)toupper(c[i]);else if (c[i] == '_') cout << c[i];}return 0;
}

在这里插入图片描述
发现第五个样例 “运行时错误”
这是因为c字符串默认为空串,不能使用c[k++] = …的写法,这样会造成下标越界的错误,需改为c += …
(只能使用size中的空间,不能使用capacity中的空间),字符串的大小或长度(size)是指该字符串实际容纳的字符数,而字符串的容量(capacity)是该字符串最多容纳的字符数。

参考:vector容器中size与capacity的区别

size与capacity的区别

一般地,“运行时错误” 还包括这些:
return value 255:当0作为除数是就会报这样的错。
return value 3221225620:当运行时出现错误时会报这样的错。
return value 3221225477:访问越界时会报这样的错。
return value 3221225725:一般在无穷递归或空间太大时报这样的错。

修改之后的完整代码:

#include <bits/stdc++.h>
using namespace std;
int main()
{string a, b, c;cin >> a >> b;int k = 0;int lena = a.size();for (int i = 0, j = 0; i < lena;){if (a[i] != b[j]){c += a[i];i++;}else {i++;j++;}}for (int j = 0; j < c.size() - 1; ++j){for (int i = j + 1; i < c.size(); ++i){if (toupper(c[i]) == toupper(c[j])) c[i] = '#';}}for (int i = 0; i < c.size(); ++i){if (isdigit(c[i])) cout << c[i];else if (isalpha(c[i])) cout << (char)toupper(c[i]);else if (c[i] == '_') cout << c[i];}return 0;
}

另解:(参考1029. 旧键盘(20)-PAT乙级真题)

考虑使用C++中的find函数。

分析:用string的find函数,遍历字符串s1,当当前字符s1[i]不在s2中,它的大写也不在ans中时,将当前字符的大写放入ans中,最后输出ans字符串即可。

代码如下:

#include <iostream>
#include <cctype>
using namespace std;
int main() {string s1, s2, ans;cin >> s1 >> s2;for (int i = 0; i < s1.length(); i++)if (s2.find(s1[i]) == string::npos && ans.find(toupper(s1[i])) == string::npos)ans += toupper(s1[i]);cout << ans;return 0;
}

/* 以下为补充知识 */ ,参考find()函数及其他常用函数总结

C++中,字符串string自带find函数(包含于头文件#include <string>中)
find函数可用于在字符串a中查找另一个子串b,或者在字符串中查找单个字符。本题主要使用的是后者。如果找不到,则返回值为string::npos ,即对于string,通过a.find(val) == string::npos来做判断是否查找成功

示例1:

string s1;
char c;
if(s1.find(c) != string::npos){   //查找字符 printf("字符c在s1中的起始下标为%d\n", s1.find(c)); }else{printf("s1中不存在字符c"); } 

示例2:(用于计算一个字符串中有多少不重复的字符数

#include <iostream>
#include <string>
using namespace std;
int main()
{string str;getline(cin, str);int count = 0;for (int i = 0; i <= 127; i++)if (str.find(i) != string::npos)count++;cout << count;
}

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

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

相关文章

【5G RRC】5G系统消息SIB3介绍

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

Windows下命令执行绕过技巧总结(渗透测试专用)

一、连接符1、双引号不要求双引号闭合举例&#xff1a;"who"a"mi" //闭合的 "who"a"mi //不闭合的2、圆括号必须在两边&#xff0c;不能包括中间的字符。举例&#xff1a;((whoami))3、^符号&#xff08;转译符号&#xff09;不可以在结尾&…

Go项目(商品微服务-1)

文章目录简介建表protohandler商品小结简介 商品微服务主要在于表的设计&#xff0c;建哪些表&#xff1f;表之间的关系是怎样的&#xff1f; 主要代码就是 CURD表和字段的设计是一个比较有挑战性的工作&#xff0c;比较难说清楚&#xff0c;也需要经验的积累&#xff0c;这里…

【机器学习笔记】Python基础笔记

目录基础语法加载数据&#xff1a;pd.read_csv查看数据大小&#xff1a;shape浏览数据行字段&#xff1a;columns浏览少量数据&#xff1a;head()浏览数据概要&#xff1a;describe()输出&#xff1a;to_csv基础功能语法缺省值去除缺失值&#xff1a;dropna按行删除&#xff1a…

Paddle配置

目录&#xff1a; 1.激活环境 2.版本选择 突发情况&#xff1a;ModuleNotFoundError: No module named paddle 检验是否安装成功 1.激活环境 Anaconda&#xff1a; conda remove -n paddle --all conda activate paddle 2.版本选择 打开链接&#xff1a;https://www.pa…

基于企业微信应用消息的每日早安推送

基于企业微信应用消息的每日早安推送 第一步&#xff1a;注册企业微信 企业微信注册地址&#xff1a;https://work.weixin.qq.com/wework_admin/register_wx 按照正常流程填写信息即可&#xff0c;个人也可以注册企业微信&#xff0c;不需要公司 注册完成后&#xff0c;登录…

Google Guice 4:Bindings(2)

4 Scopes (实例的作用域&#xff09; 4.1 默认规则&#xff1a;unreuse instance 到目前为止&#xff0c;通过bind().to()和Provides定义的binding&#xff0c;每次需要注入实例对象时&#xff0c;Guice都会创建一个新的实例 // 修改DatabaseTransactionLog&#xff0c;使其打…

Ncvicat 打开sql文件方法

Nacicat打开sql文件时&#xff0c;有比较多的文章介绍可以直接打开&#xff0c;方法介绍的比较多&#xff0c;但是我遇到了一个坑&#xff0c;就是如何配置环境都无法打开。 本机环境&#xff1a; windows10 mysql 5.7.40 Navicat12.1 一、遇到问题情况 1.1、通过navicat…

【python量化】大幅提升预测性能,将NSTransformer用于股价预测

写在前面 NSTransformer模型来自NIPS 2022的一篇paper《Non-stationary Transformers: Exploring the Stationarity in Time Series Forecasting》。NSTransformer的目的主要是为了解决其他方法出现过平稳化处理的问题。其通过提出序列平稳化以及去平稳化注意力机制可以使得模型…

2023年三月份图形化二级打卡试题

活动时间 从2023年3月1日至3月21日&#xff0c;每天一道编程题。 本次打卡的规则如下&#xff1a; 小朋友每天利用10~15分钟做一道编程题&#xff0c;遇到问题就来群内讨论&#xff0c;我来给大家答疑。 小朋友做完题目后&#xff0c;截图到朋友圈打卡并把打卡的截图发到活动群…

【尚硅谷MySQL入门到高级-宋红康】数据库概述

1、为什么要使用数据库 数据的持久化 2、数据库与数据库管理系统 2.1 数据库的相关概念 2.2 数据库与数据库管理系统的关系 3、 MySQL介绍 MySQL从5.7版本直接跳跃发布了8.0版本 &#xff0c;可见这是一个令人兴奋的里程碑版本。MySQL 8版本在功能上做了显著的改进与增强&a…

CXL技术分析

CXL&#xff0c;全称Compute Express Link&#xff0c;该技术由Intel牵头开发用于高性能计算、数据中心&#xff0c;主要解决处理器、加速器和内存之间的cache一致性问题&#xff0c;可消除CPU、专用加速器的计算密集型工作负载的传输瓶颈&#xff0c;显著提升系统性能。 一、…

python的装饰器与设计模式中的装饰器模式

相信很多人在初次接触python中的装饰器时&#xff0c;会跟我一样有个疑问&#xff0c;这跟设计模式中的装饰器模式有什么区别吗&#xff1f;本质上是一样的&#xff0c;都是对现有对象&#xff0c;包括函数或者类的一种扩展。这篇文档将进行对比分析。 python的装饰器 装饰器…

duboo+zookeeper分布式架构入门

分布式 dubbo Zookeeper 分布式系统就是若干独立计算机的集合&#xff08;并且这些计算机之间相互有关联&#xff0c;就像是一台计算机中的C盘F盘等&#xff09;&#xff0c;这些计算对于用户来说就是一个独立的系统。 zookeeper安装 下载地址&#xff1a;Index of /dist/z…

【数据库系统概论】基础知识总结

&#x1f339;作者:云小逸 &#x1f4dd;个人主页:云小逸的主页 &#x1f4dd;Github:云小逸的Github &#x1f91f;motto:要敢于一个人默默的面对自己&#xff0c;强大自己才是核心。不要等到什么都没有了&#xff0c;才下定决心去做。种一颗树&#xff0c;最好的时间是十年前…

C++10:非类型模板参数以及模板的特化

目录 非类型模板参数 模板的特化 模板类的特化 1.全特化 2.偏特化 模板其实还有其他的玩法&#xff0c;比如非类型模板参数以及模板的特化。 非类型模板参数 在记述非类型模板参数前&#xff0c;我们认识一下C中一个比较鸡肋的类&#xff0c;array #include<iostream&g…

k8s-yaml文件

文章目录一、K8S支持的文件格式1、yaml和json的主要区别2、YAML语言格式二、YAML1、查看 API 资源版本标签2、编写资源配置清单2.1 编写 nginx-test.yaml 资源配置清单2.2 创建资源对象2.3 查看创建的pod资源3、创建service服务对外提供访问并测试3.1 编写nginx-svc-test.yaml文…

数据仓库Hive

HIve介绍 Hive是建立在Hadoop上的数据仓库基础构架。它提供了一系列的工具&#xff0c;可以用来进行数据提取转化加载&#xff0c;可以简称为ETL。 Hive 定义了简单的类SQL查询语言&#xff0c;称为HQL&#xff0c;它允许熟悉SQL的用户直接查询Hadoop中的数据&#xf…

如何从0创建Spring Cloud Alibaba(多模块)

以一个父工程带两个Module&#xff08;test1、test2&#xff09;为例。 一、创建父工程 由于是模块化项目&#xff0c;那么父工程不需要实际的代码逻辑&#xff0c;因此无需创建src&#xff0c;那么可以有几种方式创建&#xff0c;例如&#xff1a; 使用Spring Initializr脚…

腾讯一面—Android 系统启动流程详解

正文AMS 是 Android 中最核心的服务之一&#xff0c;主要负责系统中四大组件的启动、切换、调度及应用进程的管理和调度等工作&#xff0c;其职责与操作系统中的进程管理和调度模块相类似&#xff0c;它本身也是一个 Binder 的实现类&#xff0c;应用进程能通过 Binder 机制调用…