首页 > 其他分享 >找出俩个字符串的相同并删除

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

时间:2024-05-06 23:45:34浏览次数:28  
标签:找出 遍历 str ++ pp char 俩个 && 字符串

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

今天遇到一个题目,就是有俩个字符串,A和B,找出A中和B相同的字母,并删除,只对字母进行操作,具体题目如下:
image

子函数实现

对于比较A和B字符串并删除A与B相同的字母,返回A的地址

  • /*******************************************************************
    *
    *	name	 :	StringDel
    *	function :  找出A和B相同的字母并删除,返回A
    *	argument :  @data  指定结点的数据域的数据
    *	retval	 :  None
    *	author	 :  yq_dyx@163.com
    *	date	 :  2024/05/06
    * 	note	 :  None
    * 	
    * *****************************************************************/
    #include <stdio.h>
    #include <stdlib.h>
    
    char *StringDel(char *A,char *B)
    {
        char *p = A;                  //p备份A的首地址用于遍历比较
        char *str = A;                //str备份A的首地址用于存放结果
        char *pp = B;                 //pp备份B的首地址用于遍历比较
        while(*p != '\0')             //用于遍历A
        {
            pp = B;                   //当p偏移一次pp回到B的首地址,重新从开始比较
            if((*p < 'A' || *p > 'Z') && (*p < 'a' || *p > 'z'))                //当p不是字母时,重新从开始比较
            {
                p++;
                continue;
            }
    
            while(*pp)                  //用于遍历B
            {
                if(*p != *pp && *p != *pp+32 && *p != *pp-32)           //当p和pp的大小写都不相等时,重新从开始比较
                {
                    pp++;
                    continue;
                }
                else                                                     //当p和pp相等时,直接退出
                {
                    pp++;
                    break;
                }      
            }
            
            if(*pp == '\0' && *str != '\0' && *(pp-1) != *p && *p != *(pp-1)+32 && *p != *(pp-1)-32)           //当pp遍历完时,p和pp不相等时,p存入结果,且与B最后的字母也不相等
            {
                *str = *p;
                str++;           
            }
    
            p++;
        }
    
        *str = '\0';            //给A的结尾加上终止符
        return A;
    }
    
    

主函数测试

int main()
{
    char A[] = "kDfjlFkwel";
    
    char B[]= "lsdkjf";
    StringDel(A,B);
    printf("%s\n",A);
    return 0;
}

已经经过测试验证并成功,测试结果如代码的测试结果一致,如图:

image

image

希望看完代码的你发现错误,请评论批评指正,非常感谢。并希望以上的代码能对同是初学者的你有所帮助,大家一起加油吧

标签:找出,遍历,str,++,pp,char,俩个,&&,字符串
From: https://www.cnblogs.com/xiaobaibudongjiuwen/p/18176223

相关文章

  • 顺序栈实现进制转换 和 通过键盘输入一个包括 '(' 和 ')' 的字符串string ,判断字符串
    /********************************************************************************************************** filename: Zqh_栈实现.c* author : keyword2024@163.com* date : 2024/05/05* function: 顺序栈实现进制转换和通过键盘输入一个包括'('和')'......
  • 删除字符串A与字符串B相同的字符
    /***filename:DelDestChar.c*author:liaojx2016@126.com*date:2024-05-06*function:DeletestringAaliketostringB'scharactor*note:None*CopyRight(c)2024liaojx2016@126.comRightReseverd***/#include<std......
  • 字符串Str函数小结
    数据结构字符串Str函数总结·我们学习过很多关于求解字符串相关问题的函数,但是都是每遇到一次算认识了,一定程度上很少进行总结,最近又重新接触到了这类“Str函数”,发现自己还是有点掌握不牢固,以下仅是个人学习总结,有错误之处可指出。如上图所示,在man手册中有许多关于str的函数,......
  • 对字符串A进行处理,参照字符串B,只有字符串B中的字母在字符串A存在,则不分大小写,从字符串
    /**@filename: main.c@brief实现对字符串A进行处理,参照字符串B,只有字符串B中的字母在字符串A存在,则不分大小写,从字符串A中删除@author1810866453@163.com@date2024/06/26@version1.0:版本@property:属性介绍@note补充注意说明CopyRight(c)2023-2024RISE......
  • 删除字符串中与另一个字符串中的相同字母的自定义函数
    #include<stdio.h>/********************************************************************* 函数名称: str_DestDel* 函数功能:删除一个字符串中与另一个字符串中的相同字母并且不区分大小写* 函数参数:* @strA 需要操作的字符串* @strB 作为参考的字......
  • 0506C语言练习:字符串A中删除字符串B中所有相同字母等
    字符串A中删除字符串B中所有相同字母(无论大小写)/***@func: 字符串A中删除字符串B中所有相同字母(无论大小写)*@date2024/05/06*@version1.0:版本*CopyRight(c)2023-2024ni456xinmie@163.comAllRightReseverd*/voidrepeat(char*a,constchar*b){......
  • 删除A字符串中B字符串有的字符
    char*DelStrAofStrB(char*strA,char*strB){//判断字符串B是否到尾部while(*strB!='\0'){//判断字符串B的当前字符是否属于字母(不论大小写)if((*strB<'A'||*strB>'Z')&&(*strB<'a'||*str......
  • 用php找出字符串中连续重复次数最多的字符,你有方法吗?
     找出字符串中连续重复次数最多的字符,这里总结了几种方法,不管是在开发中,还是在面试中都会遇到。方法一<?php$arr=str_split($str);//字符串分隔到数组中$arr=array_count_values($arr);//用于统计数组中所有值出现的次数,返回一个数组//键名为原数组的键值,键值为......
  • 如何快速找出文件夹里的全部带有中文&纯中文的文件
    首先,需要用到的这个工具YTool:度娘网盘提取码:qwu2蓝奏云提取码:2r1z步骤1、打开工具,切换到批量复制文件2、鼠标移到右侧,点击搜索添加3、设定查找范围、指定为文件、勾选包含全部子文件夹,点击“详细过滤条件-文件”4、设定过滤的情况勾选“按命名”、范围为:“仅文件名......
  • 数据类型之字符串
    1、字符串的定义单引号,双引号引起来的2、字符串的索引和切片和转义2.1索引:1.索引值从0开始索引超长会报错IndexError:stringindexoutofrange2.写法:str[0]2.2切片:1.[起始下标:终止下标:步长]:起始下标默认为0,步长默认为12.取头不取尾,左开右闭3.步长为正数,正......