从字符串A中删除字符串B中存在的字母(不区分大小写)C语言实现

news/2024/10/7 6:42:09

V1.0 2024年5月7日 发布于博客园

题目:

image

​ 设计一程序实现功能,处理字符串A,处理规则是:只要B字符串里面有的字母,不区分大小写,一律从A字符串中删掉。

/*** @name      string* @brief     实现对字符串A进行处理,参照字符串B,只有字符串B中的字母在字符串A存在,则不分大小写,从字符串A中删除* @param     strA 要处理的字符串* @param     strB 参照字符串* @date      2024/05/6* @version   1.0* @note*/
void string(char *strA, char *strB)
{// 操作指针char *pstrB = strB;char *pResA = strA; // 用于存放结果char *pCurA = strA; // 逐一查找// 逐一操作字符串A并查找字符串Bwhile (*pCurA != '\0') // 逐一查找{pstrB = strB; // 操作指针复位while (*pstrB != '\0' && *pCurA != '\0') // 对B从头到尾查找{// 判断字符串B的当前字符是否属于字母(大写字母 or 小写字母)if ((*pstrB < 'A' || *pstrB > 'Z') && (*pstrB < 'a' || *pstrB > 'z')){// 如果字符串B的字符不是字母,则向后偏移pstrB++;continue;}// 字符B当前字符有效if (*pstrB > *pCurA){if ((*pstrB - 32) == *pCurA) // 找到相同直接退出{break;}}else if (*pstrB == *pCurA){break;}else if (*pstrB < *pCurA){if ((*pstrB + 32) == *pCurA) // 找到相同直接退出{break;}}pstrB += 1;}if (*pstrB == '\0') // 在B中没有找到, 将合格字符写入结果中{*pResA = *pCurA;pResA += 1; // 指向后面一位}pCurA += 1;}*pResA = '\0'; // 字符串结束
}

测试

测试代码

/*** @file name : 从字符串A中删除字符串B中存在的字母(不区分大小写).c* @brief     : 实现对字符串A进行处理,参照字符串B,只有字符串B中的字母在字符串A存在,则不分大小写,从字符串A中删除* @author    : RISE_AND_GRIND@163.com* @date      : 2024/05/6* @version   : 1.0* @note      :* CopyRight (c)  2023-2024   RISE_AND_GRIND@163.com   All Right Reseverd*/
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>/*** @name      string* @brief     实现对字符串A进行处理,参照字符串B,只有字符串B中的字母在字符串A存在,则不分大小写,从字符串A中删除* @param     strA 要处理的字符串* @param     strB 参照字符串* @date      2024/05/6* @version   1.0* @note*/
void string(char *strA, char *strB)
{// 操作指针char *pstrB = strB;char *pResA = strA; // 用于存放结果char *pCurA = strA; // 逐一查找// 逐一操作字符串A并查找字符串Bwhile (*pCurA != '\0') // 逐一查找{pstrB = strB; // 操作指针复位while (*pstrB != '\0' && *pCurA != '\0') // 对B从头到尾查找{// 判断字符串B的当前字符是否属于字母(大写字母 or 小写字母)if ((*pstrB < 'A' || *pstrB > 'Z') && (*pstrB < 'a' || *pstrB > 'z')){// 如果字符串B的字符不是字母,则向后偏移pstrB++;continue;}// 字符B当前字符有效if (*pstrB > *pCurA){if ((*pstrB - 32) == *pCurA) // 找到相同直接退出{break;}}else if (*pstrB == *pCurA){break;}else if (*pstrB < *pCurA){if ((*pstrB + 32) == *pCurA) // 找到相同直接退出{break;}}pstrB += 1;}if (*pstrB == '\0') // 在B中没有找到, 将合格字符写入结果中{*pResA = *pCurA;pResA += 1; // 指向后面一位}pCurA += 1;}*pResA = '\0'; // 字符串结束
}int main(void)
{char strA[] = "aab. dc   / - Ad  ? Ef";char strB[] = "Ab.d";string(strA, strB);for (int i = 0; i < 1000; i++){if (strA[i] == '\0'){break;}printf("%c", strA[i]);}printf(" \n");return 0;
}

测试结果

目标:aab. dc   / - Ad  ? Ef
参照:Ab.d
理论:. c   / -   ? Ef
实际:. c   / -   ? Ef 

image

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

[SNOI2019] 数论

这一道题目最好记住,就是两个模数之间在互相作用 首先转化一下,我们枚举其中一个集合然后快速查询另一个集合 也就变成了\((a_i+kP)mod\: Q∈B\) 然后看这篇文章的建模 解释一下 它是将\([0,Q)\)中的每一个数弄成一个环,就像下面这样然后加一个\(P\)就相当于瞬时间走\(P\)步…

andriod sdk 安装

1、下载andriod sdk tools https://www.androiddevtools.cn/ 2、解压zip包 dos窗口进入 解压路劲 执行 tools\android.bat update sdk --no-ui(解压目录中SDK Readme.txt)

R语言分析糖尿病数据:多元线性模型、MANOVA、决策树、典型判别分析、HE图、Boxs M检验可视化

全文链接:https://tecdat.cn/?p=33609 原文出处:拓端数据部落公众号 背景 Reaven和Miller(1979)研究了145名非肥胖成年人的葡萄糖耐量和胰岛素血液化学指标之间的关系。他们使用斯坦福线性加速器中心的PRIM9系统将数据可视化为3D,并发现了一个奇特的图案,看起来像是一个…

R语言经济学:动态模型平均(DMA)、动态模型选择(DMS)预测原油价格时间序列

原文链接:http://tecdat.cn/?p=22458 原文出处:拓端数据部落公众号简介 本文提供了一个经济案例。着重于原油市场的例子。简要地提供了在经济学中使用模型平均和贝叶斯方法的论据,使用了动态模型平均法(DMA),并与ARIMA、TVP等方法进行比较。希望对经济和金融领域的从业…

数据分享|广义线性模型beta二项分布的淋巴结疾病风险预测可视化R语言实现

全文链接:https://tecdat.cn/?p=36112 原文出处:拓端数据部落公众号 淋巴结疾病作为一类复杂的健康问题,其风险预测一直是临床和公共卫生领域的研究热点。随着统计学的进步和计算能力的提升,广义线性模型(GLM)成为了分析这类数据的有力工具。特别是当数据呈现比例特性时…

大模型高效微调详解-从Adpter、PrefixTuning到LoRA

一、背景 目前NLP主流范式是在大量通用数据上进行预训练语言模型训练,然后再针对特定下游任务进行微调,达到领域适应(迁移学习)的目的。指令微调是预训练语言模型微调的主流范式其目的是尽量让下游任务的形式尽量接近预训练任务,从而减少下游任务和预训练任务之间的Gap, 实…

找出俩个字符串的相同并删除

找出俩个字符串相同并删除 今天遇到一个题目,就是有俩个字符串,A和B,找出A中和B相同的字母,并删除,只对字母进行操作,具体题目如下:子函数实现 对于比较A和B字符串并删除A与B相同的字母,返回A的地址/****************************************************************…

如何根据二叉树遍历结果快速绘制二叉树

一、已知前序遍历和中序遍历 (1)前序遍历(根结点--->左子树--->右子树) A B D G H C E I F (2)中序遍历(左子树--->根结点--->右子树) G D H B A E I C F注意:在最后连接二叉树时,注意先完玩左子树,再连右子树 二、已知前后序遍历和中序遍…