关闭

Leetcode no. 306

129人阅读 评论(0) 收藏 举报
分类:

306. Additive Number


Additive number is a string whose digits can form additive sequence.

A valid additive sequence should contain at least three numbers. Except for the first two numbers, each subsequent number in the sequence must be the sum of the preceding two.

For example:
"112358" is an additive number because the digits can form an additive sequence: 1, 1, 2, 3, 5, 8.

1 + 1 = 2, 1 + 2 = 3, 2 + 3 = 5, 3 + 5 = 8
"199100199" is also an additive number, the additive sequence is: 1, 99, 100, 199.
1 + 99 = 100, 99 + 100 = 199

Note: Numbers in the additive sequence cannot have leading zeros, so sequence 1, 2, 03 or 1, 02, 3 is invalid.

Given a string containing only digits '0'-'9', write a function to determine if it's an additive number.

Follow up:
How would you handle overflow for very large input integers?


public class Solution {
    public boolean isAdditiveNumber(String num) {
        for (int i = 1; i <= (num.length()>>1); i++) {
            for (int j = 1; j <= (num.length()>>1); j++) {
                String first= num.substring(0,i);
                if (2*i+j>num.length() || 2*j+i>num.length()) break;
                String second= num.substring(i,i+j);
                String rest= num.substring(i+j);
                if (checkAdditive(first, second, rest)==true) return true;
            }
        }
        return false;
    }
    private boolean checkAdditive(String s1, String s2, String s){
        if ((s1.length()>1 && s1.charAt(0)=='0') || (s2.length()>1 && s2.charAt(0)=='0'))
            return false;
        String add= addUp(s1,s2);
        if (add.equals(s)) return true;
        if (s.length()<add.length()) return false;
        if (!s.substring(0, add.length()).equals(add)) return false;
        return checkAdditive(s2, add, s.substring(add.length()));
    }
    private String addUp(String s1, String s2){
        StringBuilder sb= new StringBuilder();
        int i= s1.length()-1, j= s2.length()-1, flag=0;
        while (i>=0 || j>=0 || flag>0){
            int add= flag+ ((i>=0)? s1.charAt(i--)-'0':0)+((j>=0)? s2.charAt(j--)-'0':0);
            sb.insert(0, add%10);
            flag=add/10;
        }
        return sb.toString();
    }
}


0
0
查看评论

应对steamVR 软件报错306的问题

问题描述:想利用tracker和Lighthouse station 建造一个室内定位系统。未使用头盔。在steamVR 的setting文件中将“requireHMD”项设置为“false”。利用github 上的traid_openvr获取tracker位资。前期使用流畅,后期重装了系统,再次安...
  • qq_31310793
  • qq_31310793
  • 2017-11-21 14:39
  • 222

[LeetCode306] Additive Number

Additive number is a string whose digits can form additive sequence. A valid additive sequence should contain at least three numbers. Exc...
  • sbitswc
  • sbitswc
  • 2015-12-06 03:56
  • 2839

LeetCode 306 Additive Number

Additive number is a string whose digits can form additive sequence. A valid additive sequence should contain at least three numbers. Excep...
  • niuooniuoo
  • niuooniuoo
  • 2016-05-18 11:03
  • 389

LeetCode 306 addtive number

addtive numer  主要是判断一个数是不是可加的,譬如1123,13417等都是爱的addtive numer 首先,本算法可以采用递归方法或者迭代方法,判断函数为isTrue函数。 首先选择数a,可以从第0位一直到一半的位数就足够   a     ...
  • weixin_40574455
  • weixin_40574455
  • 2017-10-23 11:12
  • 47

LeetCode(306) Additive Number

题目Additive number is a string whose digits can form additive sequence.A valid additive sequence should contain at least three numbers. Except for the ...
  • fly_yr
  • fly_yr
  • 2015-12-12 16:56
  • 1970

Leetcode no. 231

231. Power of Two Given an integer, write a function to determine if it is a power of two. public class Solution { public boolean is...
  • SmithZz
  • SmithZz
  • 2016-05-28 22:55
  • 119

Leetcode no. 16

16. 3Sum Closest    Given an array S of n integers, find three integers in S such that the sum is cl...
  • SmithZz
  • SmithZz
  • 2016-04-26 11:38
  • 120

Leetcode no. 80

80. Remove Duplicates from Sorted Array II Follow up for "Remove Duplicates": What if duplicates are allowed at most twice? Fo...
  • SmithZz
  • SmithZz
  • 2016-04-08 10:48
  • 173

Leetcode no. 43

43. Multiply Strings Given two numbers represented as strings, return multiplication of the numbers as a string. Note: The numbers ca...
  • SmithZz
  • SmithZz
  • 2016-05-28 22:26
  • 138

leetcode 306 : Additive Number

1、原题如下 Additive number is a string whose digits can form additive sequence. A valid additive sequence should contain at least three numbers. Ex...
  • l3368bcttqnqn
  • l3368bcttqnqn
  • 2015-11-27 21:27
  • 336
    个人资料
    • 访问:15159次
    • 积分:1238
    • 等级:
    • 排名:千里之外
    • 原创:111篇
    • 转载:4篇
    • 译文:0篇
    • 评论:0条
    文章分类