В этом вызове LeetCode нас просят преобразовать входящую строку в целое число. Теперь вы можете подумать про себя: «Но подождите, разве не для этого предназначен parseInt? Что ж, вы были бы правы, и именно поэтому этот вопрос, как сообщается, является одним из самых нелюбимых во всем LeetCode. Это, а также тот факт, что у него очень длинный список (на мой взгляд, необоснованных) условий.

Решение №1: parseInt()

Во-первых, давайте посмотрим, как мы решим это, используя инструменты, которые дает нам JavaScript:

Это просто, элегантно, быстро и может быть упрощено до 1-4 строк в зависимости от того, насколько удобочитаемостью вы готовы пожертвовать. Но если вы спросите раздел комментариев на LeetCode, вы, вероятно, получите изрядную долю ненависти за то, что предложили это решение.

Решение № 2: Слишком много операторов if

Из-за большого количества условий, применяемых к этому вопросу, трудно придумать что-то особенно изящное. Может быть бесконечное количество начальных пробелов, но пробел после числа указывает на конец числа, даже если за ним следуют другие числа. Буквы не могут предшествовать цифре, а + и - могут, но не по две сразу, и не могут следовать после...

Видите здесь проблему? Ну вот проблема в коде:

Код довольно быстрый, но определенно может быть улучшен. Почему я не улучшил его? Потому что parseInt() существует по причине… по этой причине!