蓝桥杯:对字符串处理常用知识笔记
一、前面四个是计算带有空格字符串的的长度计算
C语言代码
#include<string.h>
#include<stdio.h>
int main()
{
char s[105];
gets(s);
printf("%d", strlen(s));
return 0;
}
算法2
C++ 代码(常用)
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
string a;
getline(cin, a);
cout << a.size() << endl;
return 0;
}
算法3
C++ 代码
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char a[105];
cin.get(a, 105);//需要注意cin.get()不会把换行符取出删除,影响下一次读入!
cout << strlen(a) << endl;
return 0;
}
算法4
C++ 代码
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char a[105];
cin.getline(a, 105);//需要注意cin.getline()会把换行符取出删除,不影响下一次读入!
cout << strlen(a) << endl;
return 0;
}
顺带一提 cin 和 scanf读入字符串时遇到空格就停止了
二、对字符串处理的常用的函数
1. size() 或 length()
这两个函数用于返回字符串的长度。
cpp
复制编辑
string s = "hello";
cout << s.size() << endl; // 输出 5
cout << s.length() << endl; // 输出 5
- size() 和 length() 是等价的,返回字符串的字符数。
2. substr(start, length)
从字符串中提取一个子字符串。start 是开始的位置,length 是子字符串的长度。如果 length 超出了范围,返回从 start 到字符串末尾的部分。
cpp
复制编辑
string s = "hello";
string sub = s.substr(1, 3); // 提取从位置 1 开始,长度为 3 的子字符串
cout << sub << endl; // 输出 "ell"
- 如果只传递一个参数 start,会从 start 位置提取到字符串末尾。
cpp
复制编辑
string s = "hello";
string sub = s.substr(2); // 从位置 2 开始提取到字符串末尾
cout << sub << endl; // 输出 "llo"3. find(substring)
返回子字符串第一次出现的位置。如果没有找到子字符串,返回 string::npos。
cpp
复制编辑
string s = "hello";
int pos = s.find("ll");
cout << pos << endl; // 输出 2
- find() 还可以指定搜索的起始位置:s.find("ll", 3) 会从索引 3 开始查找。
4. rfind(substring)
与 find() 类似,但从字符串的末尾开始查找。
cpp
复制编辑
string s = "hello";
int pos = s.rfind("l");
cout << pos << endl; // 输出 3 (从右到左查找)5. erase(start, length)
删除从 start 位置开始的指定长度的字符。
cpp
复制编辑
string s = "hello";
s.erase(1, 2); // 从位置 1 开始删除 2 个字符
cout << s << endl; // 输出 "ho"
- 如果只提供 start 参数,erase() 会删除从 start 到字符串末尾的所有字符。
cpp
复制编辑
string s = "hello";
s.erase(2); // 从位置 2 开始删除到末尾
cout << s << endl; // 输出 "he"6. insert(start, substring)
在指定位置插入一个子字符串。
cpp
复制编辑
string s = "hello";
s.insert(3, "abc"); // 在位置 3 插入 "abc"
cout << s << endl; // 输出 "helabclo"7. replace(start, length, substring)
替换从 start 位置开始的 length 个字符为 substring。
cpp
复制编辑
string s = "hello";
s.replace(1, 2, "abc"); // 从位置 1 开始,替换 2 个字符为 "abc"
cout << s << endl; // 输出 "habclo"8. at(index)
返回指定位置的字符(比 operator[] 更安全,当索引越界时会抛出 out_of_range 异常)。
cpp
复制编辑
string s = "hello";
cout << s.at(1) << endl; // 输出 'e'
- 如果 index 超出了范围,at() 会抛出异常。
cpp
复制编辑
try {
cout << s.at(10) << endl; // 抛出异常
} catch (out_of_range& e) {
cout << "Out of range" << endl;
}9. c_str()
将 string 转换为 C 风格的字符串(即以 null 结尾的字符数组)。
cpp
复制编辑
string s = "hello";
const char* cstr = s.c_str();
cout << cstr << endl; // 输出 "hello"10. push_back(c)
向字符串的末尾添加一个字符。
cpp
复制编辑
string s = "hello";
s.push_back('!');
cout << s << endl; // 输出 "hello!"11. pop_back()
删除字符串的最后一个字符。
cpp
复制编辑
string s = "hello";
s.pop_back();
cout << s << endl; // 输出 "hell"12. clear()
清空字符串内容,使其长度为 0。
cpp
复制编辑
string s = "hello";
s.clear();
cout << s.size() << endl; // 输出 013. empty()
判断字符串是否为空。
cpp
复制编辑
string s = "hello";
cout << (s.empty() ? "Yes" : "No") << endl; // 输出 "No"s.clear();
cout << (s.empty() ? "Yes" : "No") << endl; // 输出 "Yes"14. stoi() / stol() / stoll()
将字符串转换为整数类型。
cpp
复制编辑
string s = "12345";
int num = stoi(s); // 将字符串 "12345" 转换为整数 12345
cout << num << endl; // 输出 12345
- stoi 用于 int,stol 用于 long,stoll 用于 long long。
15. to_string()
将整数或浮点数转换为字符串。
cpp
复制编辑
int num = 12345;
string s = to_string(num); // 将整数 12345 转换为字符串 "12345"
cout << s << endl; // 输出 "12345"16. sort()
对字符串进行排序。需要 #include <algorithm>。
cpp
复制编辑
string s = "dcba";
sort(s.begin(), s.end()); // 对字符串进行字典顺序排序
cout << s << endl; // 输出 "abcd"17. reverse()
反转字符串。需要 #include <algorithm>。
cpp
复制编辑
string s = "hello";
reverse(s.begin(), s.end());
cout << s << endl; // 输出 "olleh"总结:
这些函数可以帮助我们在蓝桥杯等编程竞赛中进行各种字符串处理操作。掌握这些常用的字符串操作函数,会极大提高解题效率。希望这些例子对你有所帮助!如果你对某个具体函数有疑问,或者需要更多的解释,请随时告诉我!
三、对字符串的插入操作
相关文章:
蓝桥杯:对字符串处理常用知识笔记
一、前面四个是计算带有空格字符串的的长度计算 C语言代码 #include<string.h> #include<stdio.h> int main() { char s[105]; gets(s); printf("%d", strlen(s)); return 0; } 算法2 C 代码(常用) #include <iostream> #in…...
实现一个 Markdown 编辑器组件:Vue 3 + Vite + Highlight.js
文章目录 一、项目背景与需求分析二、搭建基础项目1. 初始化 Vue 3 项目2. 安装依赖 三、实现 Markdown 编辑器组件1. 创建 Markdown 编辑器组件2. 组件说明 四、优化与拓展1. 自动保存功能2. 文件上传功能 五、总结 一、项目背景与需求分析 在现代前端开发中,Mark…...
【回眸】Linux 内核 (十四)进程间通讯 之 信号量
前言 信号量概念 信号量常用API 1.创建/获取一个信号量 2.改变信号量的值 3. 控制信号量 信号量函数调用 运行结果展示 前言 上一篇文章介绍的共享内存有局限性,如:同步与互斥问题、内存管理复杂性问题、数据结构限制问题、可移植性差问题、调试困难问题。本篇博文介…...
Redis的used_memory_peak_perc和used_memory_dataset_perc超过90%会怎么样
当Redis的used_memory_peak_perc(当前内存占历史峰值的百分比)和used_memory_dataset_perc(数据集内存占比)均超过90%时,可能引发以下问题及风险: 一、used_memory_peak_perc > 90% 的影响 内存交换风险…...
帆软fvs文件中某表格新增数据来声提醒
1.上传音频文件到帆软安装目录的指定环境 准备一个音频文件(如 mp3 格式),并将其放置在合适的目录。 例如:%FR_HOME%\webapps\webroot\help 2.点击 FVS 模板左上角「模板>页面加载结束事件」,输入以下 JavaScript …...
从零用java实现 小红书 springboot vue uniapp (11)集成AI聊天机器人
前言 移动端演示 http://8.146.211.120:8081/#/ 管理端演示 http://8.146.211.120:8088/#/ 项目整体介绍及演示 前面的文章我们主要完成了基础模块的开发 这次我们跟一下热点 创建AI聊天机器人 并嵌入到我们的uniapp中 首先需要了解dify我已经完成了搭建win10 VMware安装ubuntu…...
Redis中AOF的实现方式和AOF重写
一、AOF 的实现方式 核心原理 AOF 通过将写操作命令以追加方式记录到日志文件中,重启时通过重放命令恢复数据。与 RDB 的快照机制不同,AOF 是增量记录,更适用于数据一致性要求较高的场景。写入流程 命令执行:客户端发送写命令&am…...
深入理解 React useLayoutEffect:精准掌控 DOM 更新时机
一、useLayoutEffect 的核心定位 1.1 与 useEffect 的关键差异 特性useEffectuseLayoutEffect执行时机浏览器绘制后异步执行DOM 更新后、绘制前同步执行视觉影响可能产生布局闪烁避免布局抖动性能影响对渲染阻塞较小可能阻塞浏览器渲染适用场景数据获取、事件订阅等DOM 测量、…...
Spring Boot 3.x 中 WebClient 全面详解及示例
Spring Boot 3.x 中 WebClient 全面详解及示例 1. WebClient 简介 定义:Spring 5 引入的响应式 HTTP 客户端,用于替代 RestTemplate(已弃用),支持异步非阻塞的 HTTP 请求。核心特性: 支持所有 HTTP 方法&a…...
Vue3+Vite+TypeScript+Element Plus开发-06.Header响应式菜单缩展
系列文档目录 Vue3+Vite+TypeScript安装 Element Plus安装与配置 主页设计与router配置 静态菜单设计 Pinia引入 Header响应式菜单缩展 Mockjs引用与Axios封装 登录设计 登录成功跳转主页 多用户动态加载菜单 Pinia持久化 动态路由-配置 文章目录 目录 系列文档…...
深入解析原生鸿蒙中的 RN 日志系统:从入门到精通!
全文目录: 开篇语📖 目录🎯 前言:鸿蒙日志系统究竟有多重要?🛠️ 鸿蒙 RN 日志系统的基础结构📜 1. 日志的作用⚙️ 2. 日志分类 🔧 如何在鸿蒙 RN 中使用日志系统🖋️ 1…...
下一代AI App架构:前端生成,后端消失
过去十年,Web 和 App 的开发范式基本稳定:前端负责交互体验,后端负责业务逻辑和数据管理。即使是“无服务架构”也只是将后端“拆散”而非“消失”。 但随着 AI 原生应用的兴起,特别是 大模型本地化、小模型部署、WebAssembly、L…...
$_POST 超级全局变量
$_POST 是一个超级全局变量,在 PHP 中用于收集通过 HTTP POST 方法发送到服务器的数据。与 $_GET 不同,$_POST 允许发送大量数据,且数据不会显示在 URL 中,因此更适用于提交敏感信息,如用户登录信息、表单数据等。 使…...
开发一个环保回收小程序需要哪些功能?环保回收小程序
废品分类展示与识别 详细分类列表:清晰展示常见废品类型,如废纸(报纸、书本纸、包装纸等)、塑料(塑料瓶、塑料容器、塑料薄膜等)、金属(易拉罐、铁制品、铜制品等)、玻璃࿰…...
Debezium嵌入式连接postgresql封装服务
文章目录 1.项目结构:2.依赖:3.application.properties4.DebeziumConnectorConfig类5.TableEnum类6.TableHandler接口(表处理抽象)7.DefaultTableHandler默认实现类8.UserTableHandler处理类9.TableHandlerFactory工厂10.Debezium…...
Mixed Content: The page at https://xxx was loaded over HTTPS
一、核心原因分析 Mixed Content 警告是由于 HTTPS 页面中引用了 HTTP 协议的资源(如脚本、图片、iframe 等),导致浏览器因安全策略阻止加载这些非加密内容。HTTP 资源可能被中间人攻击篡改,破坏 HTTPS 页面的整体安全性。 二、推荐解决方案 1. 强制资源升级为 HTTPS •…...
深度学习、图像算法学习记录
深度学习加速 综述文档: https://chenzomi12.github.io/02Hardware01Foundation/02ArchSlim.html winograd: https://zhuanlan.zhihu.com/p/260109670 ncnn 1.修改模型结构,优化模型内存访问次数,加速。 VGG 和 InceptionNet : …...
对象的创建方式有哪些?在虚拟机中具体的创建过程是怎样的?
在Java中,对象的创建方式及其在虚拟机中的具体过程如下: 一、对象的创建方式 使用 new 关键字 最常见的对象创建方式,直接调用类的构造方法。 MyClass obj new MyClass();反射(Reflection) 通过 Class 或 Constructor…...
Python 爬取 1688.item_get_factory 接口:获取工厂档案信息实战指南
在电商采购和供应链管理中,了解供应商的工厂信息是至关重要的一步。1688 作为国内领先的 B2B 平台,提供了丰富的供应商和工厂档案信息。通过 item_get_factory API 接口,开发者可以获取工厂的详细信息,包括工厂名称、地址、联系方…...
15. git push
基本概述 git push 的作用是:把本地分支的提交推送到远程仓库。推送分支需要满足快进规则(Fast-Forward),即远程分支的最新提交必须是本地分支的直接祖先,这个是通过哈希值值进行判断的。 基本用法 1.完整格式 git…...
Perl 发送邮件
Perl 发送邮件 概述 Perl 是一种强大的编程语言,广泛应用于系统管理、网络编程和数据分析等领域。其中,使用 Perl 发送邮件是一项非常实用的技能。本文将详细介绍使用 Perl 发送邮件的方法,包括必要的配置、代码示例以及注意事项。 准备工…...
Rust所有权详解
文章目录 Rust所有权所有权规则作用域 内存和分配移动与克隆栈空间堆空间 关于函数的所有权机制作为参数作为返回值 引用与租借垂悬引用 Rust所有权 C/C中我们对于堆内存通常需要自己手动管理,手动申请和释放,即便有了智能指针,对于效率的影…...
大模型推理--Qwen2.5-Omni在A100上的初体验
过去的一周Qwen2.5-Omni产生了很高的热度,吸引了很多人的目光。它的多模态确实很吸引人,放出来的demo体验还算尚可(语音对话的延迟还是太大),所以就在A100 PCIe上实地部署了一下,初步对其速度进行了测试&am…...
CExercise_07_1指针和数组_2数组元素的逆序数组逆序(指针版 reverse_by_ptr 和下标版 reverse_arr)
题目: 数组元素的逆序。要求使用[]运算符以及纯粹指针操作两种方式来完成。 关键点 arr[i] arr[len - 1 - i]; arr[0]arr[len-1]; 如果数组序列是偶数,则调换最中间一对为止;若为奇数,则单出一个不用反转. 思想就是长度取一半 eg:8/2, 9/24.5,反转一半,到5时固定…...
框架PasteForm实际开发案例,换个口味显示数据,支持echarts,只需要标记几个特性即可在管理端显示(2)
PasteForm框架的主要思想就是对Dto进行标记特性,然后管理端的页面就会以不一样的UI呈现 使用PasteForm框架开发,让你免去开发管理端的烦恼,你只需要专注于业务端和用户端! 在管理端中,如果说表格是基本的显示方式,那么图表chart就是一个锦上添花的体现! 如果一个项目拥…...
Starrocks的Bitmap索引和Bloom filter索引以及全局字典
写这个的主要作用是梳理一下Starrocks的索引效率以及使用场景。 Starrocks Bitmap索引 原理: Bitmap 索引是一种使用 bitmap 的特殊数据库索引。bitmap 即为一个 bit 数组,一个 bit 的取值有两种:0 或 1。 每一个 bit 对应数据表中的一行&…...
Explain的使用
1.使用explain语句去查看分析结果 如explain select * from test1 where id=1;会出现:id selecttype table type possible_keys key key_len ref rows extra各列。 其中, type=const表示通过索引一次就找到了; key=primary的话,表示使用了主键; type=all,表示为全表…...
QML面试笔记--UI设计篇05容器控件
1. QML中容器控件全解:构建灵活界面的基石 1.1. Item(万物容器)1.2. Rectangle(视觉容器)1.3. ListView(动态列表容器)1.4. Frame(表单容器)1.5. SwipeView(页…...
Windows操作系统安全配置(一)
1.操作系统和数据库系统管理用户身份标识应具有不易被冒用的特点,口令应有复杂度要求并定期更换 配置方法:运行“gpedit.msc”计算机配置->Windows设置->安全设置>帐户策略->密码策略: 密码必须符合复杂性要求->启用 密码长度最小值->…...
LibreOffice 自动化操作目录
一、应用场景 批量更新 Word/ODT 文档目录自动化生成报告模板与 Python 结合实现文档处理流水线 二、环境准备 1. 安装 LibreOffice 下载地址: LibreOffice 官网版本要求: 7.2(确保支持最新 UNO API)安装注意: 勾选“创建快速…...
