Leetcode # 8. String to Integer (atoi)

https://leetcode.com/problems/string-to-integer-atoi

Solution

Time Complexity: O(len(s))
Space Complexity: O(1)
(The input and output generally do not count towards the space complexity.)

class Solution:
  def myAtoi(self, s: str) -> int:
    i = p = 0
    sign = 1

    # Q0: Ignore whitespaces
    while p < len(s):
      if s[p] != " ":
        break
      p += 1
    
    # Q1: Check if the next character is "+" or "-"
    if p < len(s):
      match s[p]:
        case "+" | "-":
          sign = 1 if s[p] == "+" else -1
          p += 1

    # Read in digit characters
    while p < len(s):
      o = ord(s[p])
      if o < 48 or o > 57:
        break
      # If the integer < -2^31, return -2^31
      # If the integer > (2^31 - 1), return (2^31 - 1)
      if i == 214748364:
        if sign > 0 and o - 48 > 7: 
          return 2147483647
        if sign < 0 and o - 48 > 8: 
          return -2147483648
      elif i > 214748364:
        return 2147483647 if sign > 0 else -2147483648
      i = i * 10 + (o - 48)
      p += 1
    return sign * i

 

Last Updated on 2023/08/16 by A1go

目錄

目錄
Bitnami