Leetcode 8: String to Integer (ATOI)

preview_player
Показать описание
A classic C problem found in K&R with some twists (may be).
Рекомендации по теме
Комментарии
Автор

another option to check for overflow while keeping the result in a 32bit integer is -

inline bool isAdditiveOverflow(int a, int b) {
if (a > 0 && b > 0 && a > INT_MAX - b)
return TRUE;
if (a < 0 && b < 0 && a < INT_MIN - b)
return TRUE;
return FALSE;
}

inline bool isMultiplicativeOverflow(int a, int b) {
if (a > 0 && a > INT_MAX/b)
return TRUE;
if (a < 0 && a < INT_MIN/b)
return TRUE;
return FALSE;
}

check for condition -
isMultiplicativeOverflow(ret, 10) || isAdditiveOverflow(ret*10, start*(str[i]-'0')

akshaykalghatgi