A串減去B串中的字符



A串減去B串中的字符,要求不生成新的字符串。

定義兩個指針i和j,i用於保存字符,j用於掃描字符。思想可以擴展到在字符串中去掉冗餘空格等問題。

void func(char *A, const char *B)
{
    int i = 0, j = 0;

    set<char> s;
    while(B[i] != '\0')
        s.insert(B[i++]);

    i = 0;
    j = 0;
    while(true)
    {
        while(s.find(A[j]) != s.end())
            j++;
        if(A[j] == '\0')
            break;
        A[i++] = A[j++];
    }
    A[i] = '\0';
}

int main()
{
    char A[] = "hello";
    char B[] = "le";
    func(A, B);
    cout<<A;
}

下面是刪除冗餘空格的代碼:

void func(char *A)
{
    int i = 0, j = 0;
    while(A[j] == '_')
        j++;
    A[i] = A[j++];
    while(A[i] != '\0')
    {
        while(A[j] == '_')
            j++;
        if(A[j] != '\0')
            A[++i] = '_';
        A[++i] = A[j++];
    }
}

int main()
{
    char s[] = "___A___B_C__";
    cout<<s<<endl;
    func(s);
    cout<<s;
}


發佈了57 篇原創文章 · 獲贊 0 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章