题解 | #累加序列#

累加序列

https://www.nowcoder.com/practice/ff244079fdaf4d8f9767887ec9582043

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param arr string字符串
     * @return bool布尔型
     */
    public boolean AdditiveArray (String arr) {
        return dfs(arr, arr.length(), 0, 0, 0, 0);
    }

    //利用递归不断找到合适的字符串转成数值满足要求
    public boolean dfs(String s, int n, int index, long sum, long pre, int k) {
        if (index == n ) return k > 2; //k大于2符合题目要求
        for (int i = index; i < n ; i++) {
            int left = index, right = i;
            if (left < right && s.charAt(left) == '0') continue;

            long cur = 0;
            while (left <= right) {
                cur = cur * 10 + (s.charAt(left++) - '0');
            }

            if (k >= 2 && cur != sum) continue;

            if (dfs(s, n, i + 1, cur + pre, cur, k + 1)) return true;
        }

        return false;
    }
}

全部评论

相关推荐

季桑陌:这怎么看是不是外包啊
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务