데이터 구조 연습 (26) 문자열 에서 특정한 문 자 를 삭제 합 니 다.

3706 단어 데이터 구조
http://zhedahht.blog.163.com/blog/static/25411174200801931426484/
생각:
문자 처 리 를 삭제 하 는 매우 교묘 하고 두 바늘 로 이동 하 는 방법 에 대해 최종 시간 복잡 도 는 O (n) 입 니 다.
주의해 야 할 것 은 마지막 으로 src 문자열 에 '\ 0' 을 추가 하 는 것 을 잊 어 서 는 안 된다 는 것 이다.
#include <iostream>

#include <cstring>

using namespace std;



void DeleteChars(char *src, const char *dst)

{

    if (!src || !dst)

        return;



    const int hashsize = 256;

    int hash[hashsize];

    memset(hash, 0, sizeof(hash));



    const char *p = dst;

    while (*p != '\0')

    {

        hash[*p] = 1;

        ++p;

    }



    char *pfast = src;

    char *pslow = src;



    while (*pfast != '\0')

    {

        if (hash[*pfast] != 1)

        {

            *pslow = *pfast;

            ++pslow;

        }

        ++pfast;

    }

    *pslow = '\0';

}



int main()

{

    char s1[100] = "They are students.";

    char s2[100] = "aeiou";

    DeleteChars(s1, s2);

    return 0;

}

좋은 웹페이지 즐겨찾기