それでは毛玉諸君、これにて失敬

日々の精進を備忘録的に綴ります。

leetcode日記5

スプラトゥーンではローラーを使ってます。ko_ya346です。

可処分時間が吸い取られてしまい低浮上気味でしたが頑張ってleetcodeやります。

String to Integer (atoi)

問題を理解するのに時間がかかってしまいました、、、

  • 先頭の空文字は無視

  • 先頭から数字までの間の+-記号を抜き取る

  • 先頭から数字を抽出

  • しきい値足切り

class Solution:
    def myAtoi(self, s: str) -> int:
        import re
        
        # 先頭から空白を削除
        s = s.lstrip()
        flag = 0 
        
        # 数字より前のプラスマイナス記号を探す
        # 見つかったら、符号を保持して該当文字を削除
        for i in range(len(s)):
            if s[i] == "-":
                flag = -1
            if s[i] == "+":
                flag = 1
            if s[i].isdecimal():
                break
            if flag != 0:
                s = s[:i] + s[i+1:]
                break
        
        # 符号がなければプラス
        if flag == 0:
            flag = 1
        
        # 先頭から数字を抽出
        ans = re.search(r'^\d+', s)
        if ans is None:
            ans = 0
        else:
            ans = ans.group()
        ans = int(ans) * flag
        
        # しきい値チェック        
        threthold = pow(2, 31)
        ans = max(ans, -threthold)
        ans = min(ans, threthold - 1)
        return ans