제안은 정수로 안전 문자열을 증명하기 위해

제목 설명

문자열을 정수로 변환, 라이브러리 기능을 사용할 수 없습니다 요청은 정수 문자열로 변환합니다. 0의 값 또는 문자열이 유효한 반환 값이 아닙니다 0

사고

문자열이 + 또는에 먼저 수 있기 때문에 - 플래그, 숫자 또는 다른 문자를 다른 문자처럼, 다음 0을 돌려 다른 세 가지 범주로 나누어, 제거 - 먼저 +가 있는지 여부를 확인해야 할
문자열 다음을 당신이 그렇지 않으면 0을 반환를 초과 할 경우 금액이 최종 복귀 INT, INT가 오버 플로우 방지하기 위해, 묶여되는 것은 아니다, 우리는 오래 오래, 최종 판단은, INT 넘어 사용하십시오

코드

class Solution {
public:
    int StrToInt(string str) {
        long long res = 0;
        int sign = 0;
        if(str[0]>'9')
            return 0;
        if(str[0]=='-')
        {
		str.erase(str.begin());
		sign = 2;
	    }
        else if(str[0]=='+')
        {
		str.erase(str.begin());
		sign = 1;
	    }
        if(sign == 0)
        {
            res = add(str);
        }
        else if(sign == 1)
        {
            res = add(str);
        }
        else if(sign == 2)
        {
            res = -add(str);
        }
        if(res>2147483647 || res<-2147483648)
            return 0;
        else
            return res;
    }
    long long add(string str)
    {
        long long res = 0;
        for(int i = 0; i < str.size();i++)
            {
                if(str[i]>'9' || str[i]<'0')
                {
                    return 0;
                }
                else
                {
                    res += (str[i] - '0') * pow(10,str.size()-i-1);
                }
            }
            return res;
    }
};
게시 85 개 원래 기사 · 원의 칭찬 0 · 조회수 409

추천

출처blog.csdn.net/weixin_38312163/article/details/104743721