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

自己写的代码,未经测试

////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);
}

 

posted @ 2015-05-04 17:42  wy1290939507  阅读(220)  评论(0编辑  收藏  举报