{"id":243,"date":"2022-01-10T07:28:48","date_gmt":"2022-01-09T23:28:48","guid":{"rendered":"https:\/\/www.wennroy.com\/?p=243"},"modified":"2022-01-10T07:29:02","modified_gmt":"2022-01-09T23:29:02","slug":"306-additive-number","status":"publish","type":"post","link":"https:\/\/wennroy.com\/index.php\/2022\/01\/10\/306-additive-number\/","title":{"rendered":"306. \u7d2f\u52a0\u6570"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u7d2f\u52a0\u6570 \u662f\u4e00\u4e2a\u5b57\u7b26\u4e32\uff0c\u7ec4\u6210\u5b83\u7684\u6570\u5b57\u53ef\u4ee5\u5f62\u6210\u7d2f\u52a0\u5e8f\u5217\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e00\u4e2a\u6709\u6548\u7684 \u7d2f\u52a0\u5e8f\u5217 \u5fc5\u987b \u81f3\u5c11 \u5305\u542b 3 \u4e2a\u6570\u3002\u9664\u4e86\u6700\u5f00\u59cb\u7684\u4e24\u4e2a\u6570\u4ee5\u5916\uff0c\u5b57\u7b26\u4e32\u4e2d\u7684\u5176\u4ed6\u6570\u90fd\u7b49\u4e8e\u5b83\u4e4b\u524d\u4e24\u4e2a\u6570\u76f8\u52a0\u7684\u548c\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ed9\u4f60\u4e00\u4e2a\u53ea\u5305\u542b\u6570\u5b57&nbsp;&#8216;0&#8217;-&#8216;9&#8217;&nbsp;\u7684\u5b57\u7b26\u4e32\uff0c\u7f16\u5199\u4e00\u4e2a\u7b97\u6cd5\u6765\u5224\u65ad\u7ed9\u5b9a\u8f93\u5165\u662f\u5426\u662f \u7d2f\u52a0\u6570 \u3002\u5982\u679c\u662f\uff0c\u8fd4\u56de true \uff1b\u5426\u5219\uff0c\u8fd4\u56de false \u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8bf4\u660e\uff1a\u7d2f\u52a0\u5e8f\u5217\u91cc\u7684\u6570 \u4e0d\u4f1a \u4ee5 0 \u5f00\u5934\uff0c\u6240\u4ee5\u4e0d\u4f1a\u51fa\u73b0\u00a01, 2, 03 \u6216\u8005\u00a01, 02, 3\u00a0\u7684\u60c5\u51b5\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u56fa\u5b9a\u524d\u4e24\u4f4d\u4e4b\u540e\uff0c\u7b2c\u4e09\u4f4d\u5c31\u80fd\u76f4\u63a5\u63a8\u51fa\u6765\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u75af\u72c2\u8bd5\u9519\u5f97\u5230\u7684\u6b63\u786e\u89e3\u7b54\u3002\u4e3b\u8981\u95ee\u9898\u662f\u89e3\u51b3\u4ee5\u4e0b\u51e0\u4e2a\u4f8b\u5b50\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\u201c1203\u201d<\/li><li>\u201c1020305080130210\u201d<\/li><li>\u201c1023\u201d<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u8bf8\u5982\u6b64\u7c7b\u542b0\u7684\u5904\u7406\uff0c\u82b1\u4e86\u5f88\u4e45\u65f6\u95f4\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class Solution:\n    def isAdditiveNumber(self, num: str) -> bool:\n        n = len(num)\n        if n &lt; 3:\n            return False\n        # \u904d\u5386\u5bfb\u627e\n        a0 = 0\n\n        def findadditive(self, num, a0, a1, b1):\n            if not a0 == a1 and num[a0] == '0':\n                return False\n            if not a1+1 == b1 and num[a1+1] == '0':\n                return False\n            \n            a = int(num[a0:a1+1])\n            b = int(num[a1+1:b1+1])\n            c1_0 = max(a1-a0 +1, b1 - a1) + b1\n            c1_1 = max(a1-a0 +1, b1 - a1) + b1 + 1\n\n            flag_1 = True\n            flag_2 = True\n            if not b1+1 == c1_0 and num[b1+1] == '0':\n                flag_1 = False\n            if num[b1+1] == '0':\n                flag_2 = False\n\n            if c1_0 == n-1 and a + b == int(num[b1+1:c1_0+1]) and flag_1:\n                return True\n            if c1_1 == n-1 and a + b == int(num[b1+1:c1_1+1]) and flag_2:\n                return True\n\n            if c1_0 &lt; n-1 and a + b == int(num[b1+1:c1_0+1]) and flag_1:\n                if findadditive(self,num,a1+1,b1,c1_0):\n                    return True\n                else:\n                    return False\n            if c1_1 &lt; n-1 and a + b == int(num[b1+1:c1_1+1]) and flag_2:\n                if findadditive(self,num,a1+1,b1,c1_1):\n                    return True\n                else:\n                    return False\n            return False\n\n        for a1 in range(a0,n-2):\n            for b1 in range(a1+1, n-1):\n                ## \u786e\u5b9aa1 b1\u4e4b\u540e\uff0cc1\u7684\u4f4d\u6570\u53ea\u6709\u4e24\u79cd\u60c5\u51b5\uff1amax(a1-a0 +1, b1 - a1) \u6216\u8005 max(a1-a0 +1, b1 - a1) + 1\n                # print(a0,a1,b1)\n                if findadditive(self, num, a0, a1, b1):\n                    return True\n            \n        return False<\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"923\" height=\"160\" src=\"https:\/\/www.wennroy.com\/wp-content\/uploads\/2022\/01\/QQ\u622a\u56fe20220109171922_1.png\" alt=\"\" class=\"wp-image-242\" srcset=\"https:\/\/wennroy.com\/wp-content\/uploads\/2022\/01\/QQ\u622a\u56fe20220109171922_1.png 923w, https:\/\/wennroy.com\/wp-content\/uploads\/2022\/01\/QQ\u622a\u56fe20220109171922_1-768x133.png 768w, https:\/\/wennroy.com\/wp-content\/uploads\/2022\/01\/QQ\u622a\u56fe20220109171922_1-421x73.png 421w\" sizes=\"auto, (max-width: 923px) 100vw, 923px\" \/><figcaption>\u6700\u540e\u6267\u884c\u7528\u65f6\u5c1a\u53ef\u3002<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u5b98\u65b9\u6807\u7b54\uff1a<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class Solution:\n    def isAdditiveNumber(self, num: str) -> bool:\n        n = len(num)\n        for secondStart in range(1, n-1):\n            if num[0] == '0' and secondStart != 1:\n                break\n            for secondEnd in range(secondStart, n-1):\n                if num[secondStart] == '0' and secondStart != secondEnd:\n                    break\n                if self.valid(secondStart, secondEnd, num):\n                    return True\n        return False\n    \n    def valid(self, secondStart: int, secondEnd: int, num: str) -> bool:\n        n = len(num)\n        firstStart, firstEnd = 0, secondStart - 1\n        while secondEnd &lt;= n - 1:\n            third = self.stringAdd(num, firstStart, firstEnd, secondStart, secondEnd)\n            thirdStart = secondEnd + 1\n            thirdEnd = secondEnd + len(third)\n            if thirdEnd >= n or num[thirdStart:thirdEnd+1] != third:\n                break\n            if thirdEnd == n-1:\n                return True\n            firstStart, firstEnd = secondStart, secondEnd\n            secondStart, secondEnd = thirdStart, thirdEnd\n        return False\n    \n    def stringAdd(self, s: str, firstStart: int, firstEnd: int, secondStart: int, secondEnd: int) -> str:\n        third = []\n        carry, cur = 0, 0\n        while firstEnd >= firstStart or secondEnd >= secondStart or carry != 0:\n            cur = carry\n            if firstEnd >= firstStart:\n                cur += ord(s[firstEnd]) - ord('0')\n                firstEnd -= 1\n            if secondEnd >= secondStart:\n                cur += ord(s[secondEnd]) - ord('0')\n                secondEnd -= 1\n            carry = cur \/\/ 10\n            cur %= 10\n            third.append(chr(cur + ord('0')))\n        return ''.join(third[::-1])<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6765\u6e90\uff1a\u529b\u6263\uff08LeetCode\uff09<br>\u94fe\u63a5\uff1ahttps:\/\/leetcode-cn.com\/problems\/additive-number<br>\u8457\u4f5c\u6743\u5f52\u9886\u6263\u7f51\u7edc\u6240\u6709\u3002\u5546\u4e1a\u8f6c\u8f7d\u8bf7\u8054\u7cfb\u5b98\u65b9\u6388\u6743\uff0c\u975e\u5546\u4e1a\u8f6c\u8f7d\u8bf7\u6ce8\u660e\u51fa\u5904\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u7d2f\u52a0\u6570 \u662f\u4e00\u4e2a\u5b57\u7b26\u4e32\uff0c\u7ec4\u6210\u5b83\u7684\u6570\u5b57\u53ef\u4ee5\u5f62\u6210\u7d2f\u52a0\u5e8f\u5217 &hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[6,20],"tags":[],"class_list":["post-243","post","type-post","status-publish","format-standard","hentry","category-leetcode","category-huisu"],"_links":{"self":[{"href":"https:\/\/wennroy.com\/index.php\/wp-json\/wp\/v2\/posts\/243","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wennroy.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wennroy.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wennroy.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wennroy.com\/index.php\/wp-json\/wp\/v2\/comments?post=243"}],"version-history":[{"count":1,"href":"https:\/\/wennroy.com\/index.php\/wp-json\/wp\/v2\/posts\/243\/revisions"}],"predecessor-version":[{"id":244,"href":"https:\/\/wennroy.com\/index.php\/wp-json\/wp\/v2\/posts\/243\/revisions\/244"}],"wp:attachment":[{"href":"https:\/\/wennroy.com\/index.php\/wp-json\/wp\/v2\/media?parent=243"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wennroy.com\/index.php\/wp-json\/wp\/v2\/categories?post=243"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wennroy.com\/index.php\/wp-json\/wp\/v2\/tags?post=243"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}