zoukankan      html  css  js  c++  java
  • 306. Additive Number

        /*
         * 306. Additive Number 
         * 2016-7-3 by Mingyang
         * 这个题目我经过了很多次尝试都败下阵来,不外乎一个情况
         * 当这个string包含的数是overflow的时候我没能很好地handle
         * 下面看看吧例子是如何handle的
         */
        public boolean isAdditiveNumber(String s) {
            int n = s.length();
            for (int i = 1; i < n; i++) {
                for (int j = i + 1; j < n; j++) {
                    long a = parse(s.substring(0, i));
                    long b = parse(s.substring(i, j));
                    if (a == -1 || b == -1)
                        continue;
            //找到两个数,然后分别dfs,注意,这里的parse是自定义函数!
                    if (dfs(s.substring(j), a, b))
                        return true;
                }
            }
            return false;
        }
        boolean dfs(String s, long a, long b) {
            if (s.length() == 0)
                return true;
            for (int i = 1; i <= s.length(); i++) {
                long c = parse(s.substring(0, i));
                if (c == -1)
                    continue;
                if (c - a == b && dfs(s.substring(i), b, c)) {
                    return true;
                }
            }
            return false;
        }
        //来看看parse,如果有差错就返回-1.若是0开头也返回-1
        long parse(String s) {
            if (!s.equals("0") && s.startsWith("0"))
                return -1;
            long result = 0;
            try {
                result = Long.parseLong(s);
            } catch (NumberFormatException e) {
                return -1;
            }
            return result;
        }
  • 相关阅读:
    echarts
    联合省选2021游记
    高维 FWT 学习笔记
    Unicode简介
    mac安装brew
    原生JS实现分页跳转
    Kubernetes Pod Probes 探针解析
    Kubernetes Secrets
    Kubernetes Container lifecycle hooks
    个人作业1——四则运算题目生成程序(基于java)
  • 原文地址:https://www.cnblogs.com/zmyvszk/p/5640040.html
Copyright © 2011-2022 走看看