百度实习在线笔试题【逆序问题】

自己写的代码,未经测试

////baidu实习岗在线测评

////一组01的二进制字符串,要求不为逆序,需要交换几次位置。

//

#include <iostream>

#include <vector>

using namespace std;



typedef struct{

    unsigned int num;

    vector<char*> data;

}SInput;



void pInputData(SInput &input)

{

    int i;

    cin>>input.num;    //忽略了后面的换行符

    char n;         

    cin.get(n);      //读取下一个输入字符,即使该字符是空格、制表符或者换行符

    for(i=0;i<input.num;i++)

    {

        char* d=(char*)malloc(1000000*sizeof(char));

        cin.getline(d,1000000);        //读取整行,读取并忽略换行符

        input.data.push_back(d);

    }

}



void release(SInput input)

{

    for(int i=0;i<input.num;i++)

    {

        free(input.data[i]);

    }

}



int fuc(char* data_queue)

{

    int i=0;

    while(data_queue[i++]!='0')  //注意char型的0的表示

    {

        if(data_queue[i]=='\0')    //全部都是1

            return 0;

    }    //找到了第一个0

    while(data_queue[i++]!='1')

    {

        if(data_queue[i]=='\0')    //0之后没有1

            return 1;

    }

    return 0;    //在找到0之后也找到了1

}



void main()

{

    SInput input;

    pInputData(input);

    int result;

    for(int i=0;i<input.num;i++)

    {

        result=fuc(input.data[i]);

        cout<<result<<endl;

    }

    release(input);

}

 

你可能感兴趣的:(笔试题)