c/c++ 面试题

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<

    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;

        }

你可能感兴趣的:(c/c++ 面试题)