美文网首页
LeetCode第8题: string-to-integer-a

LeetCode第8题: string-to-integer-a

作者: 闫品品 | 来源:发表于2019-05-28 11:20 被阅读0次

    上一题:LeetCode第7题: reverse-integer(C语言)

    思路:考察遍历字符串,需要处理好正负号的问题,增加了一定的处理复杂度,整体不难

    int myAtoi(char* str) {
        int length = strlen(str);
        long result = 0;
        bool minus = false;
        bool plus = true;
        int start = -1, end = -1;
        
        for(int i = 0; i < length; i++){
            char current = str[i];
            
            if(current == ' '){
                if(start != -1){
                    break;
                }
                else if(minus == true || plus == false){
                        return 0;
                }
                else{
                    continue;
                }
            } 
            else if(current == '-'){
                if(start == -1){
                    if(plus == false){
                        return 0;
                    }
                    else if(minus == true){
                        return 0;
                    }
                    else{
                        minus = true;
                        continue;
                    }
                }
                else{
                    break;
                }
            }
            else if(current == '+'){
                if(start == -1){
                    if(minus == true){
                        return 0;
                    }
                    else if(plus == false){
                        return 0;
                    }
                    else{
                        plus = false;
                        continue;                    
                    }
                }
                else{
                    break;
                }
            }
    
            if(current >= 48 && current <= 57){
                if(start == -1){
                    start = i;
                }
                end = i;
            }
            else if(start == -1){
                return 0;
            }
            else{
                break;
            }
        }
        
        for(int i = start; start >= 0 && i < end + 1; i++){
            result += (int) str[i] - 48;
            if(i < end)
                result *= 10;
            if(result > INT_MAX)
                break;
        }
        
        if(minus){
            result = result * (-1);
        }
        
        if(result > INT_MAX){
            return INT_MAX;
        }
        else if(result < INT_MIN){
            return INT_MIN;
        }
        else{
            return result;
        }
        
    }
    

    本系列文章,旨在打造LeetCode题目解题方法,帮助和引导同学们开阔学习算法思路,由于个人能力和精力的局限性,也会参考其他网站的代码和思路,如有侵权,请联系本人删除。
    下一题:LeetCode第9题: isPalindrome(C语言)

    相关文章

      网友评论

          本文标题:LeetCode第8题: string-to-integer-a

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