美文网首页
c/c++ 面试题

c/c++ 面试题

作者: 鼓励自己前进 | 来源:发表于2018-11-08 17:23 被阅读0次

    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;

            }

    相关文章

      网友评论

          本文标题:c/c++ 面试题

          本文链接:https://www.haomeiwen.com/subject/ymnwxqtx.html