1class Solution {2static long mod;34private long solve(int idx, String s, int k, long[] dp) {5if (idx == s.length()) return 1;6if (dp[idx] != -1) return dp[idx];7long max = 0, number = 0;8for (int i = idx; i < s.length(); i++) {9int temp = s.charAt(i) - '0';10number = (number * 10) + temp;11if (number >= 1 && number <= k) {12max = (max + solve(i + 1, s, k, dp)) % mod;13} else break;14}15return dp[idx] = max;16}1718public int numberOfArrays(String s, int k) {19mod = (int) 1e9 + 7;20long[] dp = new long[s.length() + 1];21Arrays.fill(dp, -1);22return (int) solve(0, s, k, dp);23}24}