c/c++ 面試題

powerx_yc發表於2018-11-08

1 string 

https://www.jianshu.com/p/cf2149034ae3 模擬實現 string類


https://www.cnblogs.com/Y1Focus/p/6707121.html

https://www.jianshu.com/p/f590af69df6d

 

2、替換空格:

/*length 為字元陣列string的總的容量*/

void Replace(char string[], int length){

   int originalLength = 0;    /*originalLength為字串string的實際長度*/

    int numberOfBlank = 0;

    int i = 0;

    while(string[i] != '\0') {

        ++ originalLength;

        if(string[i] == ' '){

            ++ numberOfBlank;

        }

        ++ i;

    }

    /*newLength為把空格替換成‘%20’後的長度*/

    int newLength = originalLength + numberOfBlank * 2;

    if (newLength > length) {

        return ;

    }

    int indexOforiginal = originalLength;

    int indexOfNew = newLength;

    while(indexOforiginal >= 0 && indexOfNew > indexOforiginal) {

        if(string[indexOforiginal] == ' ') {

            string[indexOfNew --] = '0';

            string[indexOfNew --] = '2';

            string[indexOfNew --] = '%';

        } else {

            string[indexOfNew --] = string[indexOforiginal];

        }

        -- indexOforiginal;

    }

}

3、字串的排列:輸入一個字串,列印出該字串中字元的所有排列。例如:輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab,cba

int swap_str(char *str1,char *str2){

    char temp=*str1;

    *str1=*str2;

    *str2=temp;

}

/*這個函式是輸出排列的函式*/

void permutation(char *str1,char *begin){

    if(*begin=='\0')//當遞迴到末尾的時候,輸出該排列

        cout<<str1<<endl;

    else{

        for(char *ch=begin;*ch!='\0';*ch++){//從子字串進行遞迴

            swap_str(ch,begin);

            permutation(str1,begin+1);

            swap_str(ch,begin);

        }

    }

}

4、第一個只出現一次的字元:在字串中找出第一個只出現一次的字元。如輸入“abaccdeff”則輸出b

10. 不呼叫C/C++ 的字串庫函式,編寫strcpy

  char * strcpy(char * strDest,const char * strSrc)

        {

                if ((strDest==NULL)||strSrc==NULL))                   

                  return NULL;   

                char * strDestCopy=strDest;

                while ((*strDest++=*strSrc++)!='\0');

                *strDest = '\0';

                return strDestCopy;

        }

相關文章