发布时间:2026/6/13 18:57:29
别再暴力遍历了!用C语言strchr函数5分钟搞定PTA L1-011 A-B字符串过滤
用C语言strchr函数高效解决PTA字符串过滤问题在编程竞赛和在线评测系统(如PTA)中字符串处理是最基础也最常遇到的题型之一。许多初学者面对A-B这类字符串过滤问题时第一反应往往是使用暴力双循环遍历——这种解法虽然直观但效率低下且代码冗长。实际上C语言标准库中已经提供了strchr这样强大的字符串查找函数只需5分钟理解其用法就能写出比暴力解法更高效、更优雅的代码。1. 理解PTA L1-011 A-B问题本质PTA平台上的L1-011题目要求我们实现一个字符串过滤功能从字符串A中删除所有出现在字符串B中的字符然后输出剩余字符组成的新字符串。例如输入 I love GPLT! Its a fun game! aeiou 输出 I lv GPLT! Its fn gm传统暴力解法通常会这样实现for (int i 0; i strlen(A); i) { int found 0; for (int j 0; j strlen(B); j) { if (A[i] B[j]) { found 1; break; } } if (!found) { printf(%c, A[i]); } }这种解法的时间复杂度是O(n²)当字符串长度达到题目上限10⁴时性能会明显下降。而使用strchr函数可以将时间复杂度优化到O(n)。2. strchr函数的工作原理与优势strchr是C语言标准库string.h中提供的字符串查找函数其原型为char *strchr(const char *str, int ch);该函数会在字符串str中查找字符ch第一次出现的位置如果找到则返回指向该位置的指针否则返回NULL。它的内部实现通常经过高度优化比手写的遍历查找效率更高。使用strchr优化A-B问题的核心思路遍历字符串A的每个字符使用strchr在字符串B中查找当前字符只有当strchr返回NULL时才输出该字符优化后的代码示例如下#include stdio.h #include string.h int main() { char A[10001], B[10001]; fgets(A, sizeof(A), stdin); fgets(B, sizeof(B), stdin); size_t len strlen(A); for (size_t i 0; i len; i) { if (!strchr(B, A[i])) { putchar(A[i]); } } return 0; }3. 关键实现细节与注意事项3.1 输入处理的最佳实践在PTA等OJ平台中正确处理输入是解题的第一步。需要注意使用fgets而非gets因为后者已被弃用且存在缓冲区溢出风险处理输入字符串末尾的换行符考虑字符串可能包含空格的情况改进后的输入处理代码fgets(A, sizeof(A), stdin); A[strcspn(A, \n)] \0; // 移除换行符 fgets(B, sizeof(B), stdin); B[strcspn(B, \n)] \0;3.2 性能优化技巧虽然strchr已经比暴力解法高效但还可以进一步优化预先计算字符串长度避免在循环中重复调用strlen使用指针运算减少数组索引操作考虑字符集特性如果知道B中字符范围有限可以用查表法优化后的遍历代码const char *p A; while (*p) { if (!strchr(B, *p)) { putchar(*p); } p; }3.3 边界条件处理在实际编程竞赛中必须考虑各种边界条件空字符串输入字符串全匹配的情况包含特殊ASCII字符的情况最大长度测试用例4. 扩展应用与思维训练掌握strchr的用法不仅能解决A-B问题还能应用于许多其他场景字符串分割查找分隔符位置字符分类统计快速判断字符是否属于某集合简单模式匹配实现基础的通配符查找在编程竞赛中培养标准库优先的思维非常重要。C语言标准库中还有许多类似strchr的高效函数strstr查找子字符串strpbrk查找一组字符中的任意一个strspn/strcspn计算匹配/不匹配的初始段长度理解这些函数的内在联系能够帮助我们在面对字符串处理问题时快速选择最合适的工具。

相关新闻

别再手动核对Excel了!用xlCompare 11.0的‘比较规则’功能,5分钟搞定多表差异分析
2026/6/13 18:57:29

别再手动核对Excel了!用xlCompare 11.0的‘比较规则’功能,5分钟搞定多表差异分析

高效Excel数据核对:xlCompare 11.0智能比较规则实战指南财务人员小张每周最头疼的,莫过于核对各部门提交的预算报表。三份结构相似但数据微妙的Excel文件,往往需要耗费她整整半天时间逐行比对。直到发现xlCompare 11.0的"比较规则"…

阅读更多
保姆级教程:手把手教你用LIO_SAM复现KITTI 08序列(附完整数据与EVO评估流程)
2026/6/13 18:57:29

保姆级教程:手把手教你用LIO_SAM复现KITTI 08序列(附完整数据与EVO评估流程)

从零实现LIO_SAM在KITTI 08序列的完整评测指南当第一次接触激光惯性里程计时,许多开发者都会选择从KITTI数据集开始验证算法效果。作为SLAM领域的经典基准测试,KITTI提供了丰富的传感器数据和真值轨迹。本文将带你完整走通LIO_SAM在KITTI 08序列上的复现…

阅读更多
从“自动化提示”到“隐身模式”:Chromedp高级配置让你的爬虫更像真人操作
2026/6/13 18:57:29

从“自动化提示”到“隐身模式”:Chromedp高级配置让你的爬虫更像真人操作

从“自动化提示”到“隐身模式”:Chromedp高级配置让你的爬虫更像真人操作在当今高度数字化的商业环境中,自动化工具已成为数据采集和流程优化的重要助手。然而,随着网站反爬技术的日益精进,简单的自动化脚本往往难以突破复杂的检…

阅读更多
SpaceX上市:24年逆袭,从火箭回收、星链到太空算力,新故事能成真吗?
2026/6/13 19:57:30

SpaceX上市:24年逆袭,从火箭回收、星链到太空算力,新故事能成真吗?

SpaceX正式挂牌纳斯达克6月12日,SpaceX正式挂牌当天,马斯克前往得州的星舰基地,和数百名员工一起,远程敲响了纳斯达克的开市钟。他自嘲地说:“如果当年有人告诉我会有今天,我大概率觉得那个人嗑嗨了。因为当…

阅读更多
AI 驱动的 UI 组件智能组合推荐:从用户行为到布局方案的自动推导
2026/6/13 19:57:30

AI 驱动的 UI 组件智能组合推荐:从用户行为到布局方案的自动推导

AI 驱动的 UI 组件智能组合推荐:从用户行为到布局方案的自动推导 一、组件组合的"设计瓶颈":从需求到布局的经验依赖 前端开发中,将 UI 需求转化为组件组合方案是一个高度依赖经验的环节。一个"用户信息展示"的需求&…

阅读更多
调问更新:手机号验证、Excel 导入等新功能,提升问卷数据收集与分析体验
2026/6/13 19:57:29

调问更新:手机号验证、Excel 导入等新功能,提升问卷数据收集与分析体验

调问更新:数据收集与分析功能大升级调问自开源以来坚持前后端代码 100% 开源,助力企业搭建自己的问卷调研系统。此次更新全面提升了数据收集效率与分析专业度。全新上线手机号验证与 Excel 数据导入功能,前者保障了数据收集的真实性&#xff…

阅读更多
深入解析Kinetis SDK时钟管理器:从核心结构体到外设配置实战
2026/6/13 19:57:29

深入解析Kinetis SDK时钟管理器:从核心结构体到外设配置实战

1. 时钟管理器在Kinetis SDK中的核心地位与设计哲学在嵌入式开发领域,尤其是基于ARM Cortex-M内核的NXP Kinetis系列微控制器,时钟系统堪称整个芯片的“心跳”。它远不止是提供一个简单的节拍,而是整个系统功耗、性能和外设精度的总调度中心。…

阅读更多
一张照片变3D浮雕:ImageToSTL如何让你5分钟成为3D艺术家?
2026/6/13 19:57:29

一张照片变3D浮雕:ImageToSTL如何让你5分钟成为3D艺术家?

一张照片变3D浮雕:ImageToSTL如何让你5分钟成为3D艺术家? 【免费下载链接】ImageToSTL This tool allows you to easily convert any image into a 3D print-ready STL model. The surface of the model will display the image when illuminated from t…

阅读更多
别再暴力遍历了!用C语言strchr函数5分钟搞定PTA L1-011 A-B字符串过滤
2026/6/13 18:57:29

别再暴力遍历了!用C语言strchr函数5分钟搞定PTA L1-011 A-B字符串过滤

用C语言strchr函数高效解决PTA字符串过滤问题 在编程竞赛和在线评测系统(如PTA)中,字符串处理是最基础也最常遇到的题型之一。许多初学者面对"A-B"这类字符串过滤问题时,第一反应往往是使用暴力双循环遍历——这种解法虽然直观,但效…

阅读更多
JPEXS Free Flash Decompiler完整指南:免费SWF逆向工程实用教程
2026/6/12 9:49:36

JPEXS Free Flash Decompiler完整指南:免费SWF逆向工程实用教程

JPEXS Free Flash Decompiler完整指南:免费SWF逆向工程实用教程 【免费下载链接】jpexs-decompiler JPEXS Free Flash Decompiler 项目地址: https://gitcode.com/gh_mirrors/jp/jpexs-decompiler 你是否曾经遇到过需要修改一个Flash文件,却发现源…

阅读更多
抖音无水印视频下载器:终极技术实现与部署指南
2026/6/13 15:08:27

抖音无水印视频下载器:终极技术实现与部署指南

抖音无水印视频下载器:终极技术实现与部署指南 【免费下载链接】douyin_downloader 抖音短视频无水印下载 win编译版本下载:https://www.lanzous.com/i9za5od 项目地址: https://gitcode.com/gh_mirrors/dou/douyin_downloader 想要获取纯净的抖音…

阅读更多
工业级数据血缘分析:基于 Python 构建大规模图数据库关系拓扑与数据沿袭(Data Lineage)追踪算法
2026/6/13 11:19:35

工业级数据血缘分析:基于 Python 构建大规模图数据库关系拓扑与数据沿袭(Data Lineage)追踪算法

工业级数据血缘分析:基于 Python 构建大规模图数据库关系拓扑与数据沿袭(Data Lineage)追踪算法在企业级数据中台、大型分布式数据仓库(如 Hive、MaxCompute、ClickHouse)及数据治理体系的建设演进中,数据血…

阅读更多
终极指南:如何在macOS上轻松解密QQ音乐QMC格式文件
2026/6/13 0:57:15

终极指南:如何在macOS上轻松解密QQ音乐QMC格式文件

终极指南:如何在macOS上轻松解密QQ音乐QMC格式文件 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录,默认转换…

阅读更多
从IEEE 754到Verilog:手把手搞定浮点数与整数的$rtoi/$itor/$realtobits转换(附代码示例)
2026/6/13 0:57:15

从IEEE 754到Verilog:手把手搞定浮点数与整数的$rtoi/$itor/$realtobits转换(附代码示例)

从IEEE 754到Verilog:深入解析浮点数与整数的系统级转换实践在FPGA和ASIC设计中,处理浮点数运算一直是个棘手的问题。Verilog作为一种硬件描述语言,原生支持整数和位向量操作,但对浮点数的直接支持有限。当我们需要在算法建模、测…

阅读更多
面试官连环问:从TCP序号绕回到窗口计算,这道‘古董题’到底在考察什么?
2026/6/13 0:57:15

面试官连环问:从TCP序号绕回到窗口计算,这道‘古董题’到底在考察什么?

TCP协议深度解析:从序号绕回到窗口计算的面试核心考点当面试官抛出"TCP序号用尽怎么办"这类问题时,他们期待的绝非教科书上的标准答案。这些看似陈旧的"古董题"背后,隐藏着对候选人协议设计思想、问题解决能力和工程实践…

阅读更多
GIT修改用户名
2026/6/13 10:50:23

GIT修改用户名

在GIT中修改用户名可按以下步骤操作: 查看当前git的用户名,使用命令git config --list或git config user.name。修改git用户名,使用命令git config --global user.name "xxx(新的用户名)",将其中…

阅读更多
Win11Debloat:让你的Windows系统重获新生的终极优化工具
2026/6/13 15:45:46

Win11Debloat:让你的Windows系统重获新生的终极优化工具

Win11Debloat:让你的Windows系统重获新生的终极优化工具 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and …

阅读更多
技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践
2026/6/13 11:10:35

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter m4s-converter是一个…

阅读更多