Чето я не понял, я пропустил только переполнение, я обьяснил почему я его не включил. Ну и еще идею с плюсом скопипастил у мото которая содержала ошибку(если допускать что "-+1" не валидное число), но это никак не отражено в ваших тестах.Alexander Troyansky wrote:Вот именно. В вашем конкретном случае проблема в том, что код не вполне работоспособный получился - пришлось комментить минимум пару assert'ов, чтобы ваша функция выполнилась успешно:crypto5 wrote:Я на самом деле свой код за 5 минут написал, и он у меня сразу работать начал без отладок. Можно еще 5 минут накинуть на то что это на доске, и 5 мин. на вопросы.
Но вообще если посмотреть на glassdoor это очень нетипичный вопрос для гугла, обычно задают что-то такое для разогрева а потом переходят к чему то посложнее. Или сразу переходят к чему то посложнее.Что как и в моем случае тогда привело к пересмотрению подхода и значительному переделыванию функции -- добавляйте еще минут 10-15, а после третьего интервью, включающего обильный обед,Code: Select all
assert(!str2int(NULL, res)); assert(!str2int("", res)); assert(!str2int("-", res)); assert(!str2int(" ", res)); assert(str2int("0", res)); assert(res == 0); assert(str2int("-123", res)); assert(res == -123); assert(str2int("123", res)); assert(res == 123); assert(!str2int("12-3", res)); assert(str2int("00123", res)); assert(res == 123); assert(str2int("2147483647", res)); assert(res == MAX_INT); assert(str2int("2147483646", res)); assert(res == MAX_INT -1); // assert(!str2int("2147483648", res)); assert(str2int("-2147483647", res)); assert(res == MIN_INT+1); assert(str2int("-2147483648", res)); assert(res == MIN_INT); // assert(!str2int("-2147483649", res));
и еще одного теста в 4-м раунде, может быть даже и больше. У меня лично выносливости не хватило. Характер ненордический.
При этом я к примеру еще удалил впереди стоящие пробелы как это делает настоящая atoi в отличии от вас.