找出倆個字串的相同並刪除

不懂小白在线记录發表於2024-05-06

找出倆個字串相同並刪除

今天遇到一個題目,就是有倆個字串,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

希望看完程式碼的你發現錯誤,請評論批評指正,非常感謝。並希望以上的程式碼能對同是初學者的你有所幫助,大家一起加油吧

相關文章