leetcode8 字符串转换为整数()

 不要看我的,由于开始的时候没有看懂题目的要求,导致代码改了又改,简直是面向测试编程,有空我把代码重构一下。

int belong_to(char c,char *mys){
    int j;
    char *ss = mys;

    int slen=0;
    slen = strlen(ss);

    for(j=0;j < slen;j++){
        if(c == ss[j]){
            return 1;
        }
    }
    return 0;
}

int myAtoi(char * s){
    char use[] = "+- 0123456789\0";//{'+','-',' ','0','1','2','3','4','5','6','7','8','9'};
    char hh[] = "0123456789\0";//{'0','1','2','3','4','5','6','7','8','9'};
    char tt[] = "+-\0";
    int64_t value=0;
    int Min = -pow(2,31);
    int k;
    

    int Max = pow(2,31) -1 ;
    char t[200]= {'\0'};
    int slen = strlen(s);
    if(slen == 0){
        return 0;
    }
    for(k=0;k<slen;k++){
        if(s[k] == ' '){
            continue;
        }
        else{
            break;
        }
    }
    
    int i,j,kk=0,num=0,flag=0,start=0,end=0,tmp;
    for(i=k;i<slen;i++){

        j = belong_to(s[i],use);
       
     
        if(j==1){
            t[num] = s[i];
            printf("si = %c\n",s[i]);
            printf("%c\n",t[num]);
            num++;
  
       
           
        }
        if(j==0){
            break;
        }
        if(j==0&&tmp == 1){

            break;
        }
        tmp =j;
  
    }
 
    for(i=0;i<num;i++){
        
        j = belong_to(t[i],hh);
  
        if(j){
    
            start=i;
            break;
        }
    }
    if(start > 1){
        for(i = 0;i<start;i++){
            j = belong_to(s[i],tt);
            if(j){
                kk++;
            }
        }
        if(kk>=2){
            return 0;
        }

    }
    if(k>=1){
        if(start -1> 0){
            if(t[start-1] = " ")
                return 0;
        }
    }
    
    if(start>0&&t[start-1]=='-'){
        flag = 1;

    }
    printf("statt%d\n",start);
    for(i = start;i<num;i++){
        j = belong_to(t[i],hh);
        if(!j){
            end = i-1;
            break;
        }
        else{
            end = i;
        }
        
    }
    printf("end=%d\n",end);

    for(i=start;i<=end;i++){
        printf("tt%chh\n",t[i]);
        switch(t[i]){
            case '0':
                j = 0;
                break;
            case '1':
                j=1;
                break;
            case '2':
                j=2;
                break;
            case '3':
                j=3;
                break;
            case '4':
                j= 4;
                break;
            case '5':
                j = 5;
                break;
            case '6':
                j = 6;
                break;
            case '7':
                j = 7;
                break;
            case '8':
                j = 8;
                break;
            case '9':
                j = 9;
                break;
            default:
                return 0;
                
        }
        if(value >=4294967296){
            if(flag){
                return Min;
            }
            else{
                return Max;
            }
        }
        value = value*10 +j;
        printf("value = %ld",value);
   
    }
    if(value > Max){
        printf("jjjjj\n");
        if(flag){
            
            printf("jjhhhhhhh\n");
            return Min;
        }
        else{
            return Max;
        }
    }
    else{
        if(flag){
            return -(int)value;
        }
        else 
            return value;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值