diff --git a/src/main.rs b/src/main.rs index e4ddebd..847a055 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,29 +1,23 @@ -use std::cmp::{max, min}; mod arr; struct Solution {} impl Solution { - pub fn max_frequency(nums: Vec, k: i32, num_operations: i32) -> i32 { - let mut ans = 0; - let mut arr = vec![0; 1_000_00 + 10]; - let mut arr2 = vec![0; 1_000_00 + 10]; - for &num in nums.iter() { - let l = max(num - k, 0); - let r = min(1_000_00 + 1, num + k); - arr[l as usize] += 1; - arr[r as usize + 1] -= 1; - arr2[num as usize] += 1; + pub fn has_same_digits(s: String) -> bool { + let n = s.len() - 2; + let s = s.chars().collect::>(); + let (mut p1,mut p2) = (0,0); + let mut base = 1_u128; + let mut k = 0; + for i in 0..=n { + p1 += base * (s[i].to_digit(10).unwrap() as u128); + p2 += base * (s[i+1].to_digit(10).unwrap() as u128); + base = base * (n as u128 - k) / (k+1); + k+=1; } - let mut base = 0; - for i in 0..arr.len() { - base += arr[i]; - let local_ans = min(arr2[i] + num_operations, base); - ans = max(ans, local_ans); - } - ans + p1 % 10 == p2 % 10 } } fn main() { - println!("{:?}", Solution::max_frequency(vec![1, 1, 1, 4, 5], 1, 2)); + println!("{:?}", Solution::has_same_digits("50656587913386788475086249545073".to_string())); }