1impl Solution {2const MODULO: usize = 1_000_000_007;3pub fn number_of_arrays(s: String, k: i32) -> i32 {4let k = k as usize;5let n = s.len();67let s_bytes = s.as_bytes();89let mut dp = vec![0; n + 1];10dp[n] = 1;1112for i in (0..n).rev() {13let mut num: usize = 0;14for j in i..n {15num = num * 10 + (s_bytes[j] - b'0') as usize;16if num > k || s_bytes[i] == b'0' {17break;18}19dp[i] = (dp[i] + dp[j + 1]) % Self::MODULO;20}21}2223dp[0] as i3224}25}