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

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

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

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

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

子函数实现

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

  • /*******************************************************************
    *
    *	name	 :	StringDel
    *	function :  找出A和B相同的字母并删除,返回A
    *	argument :  @data  指定结点的数据域的数据
    *	retval	 :  None
    *	author	 :  [email protected]
    *	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

相关文章