3461. 判断操作后字符串中的数字是否相等 I
This commit is contained in:
parent
6d6b8f6f3d
commit
f0bfce2ee6
32
src/main.rs
32
src/main.rs
|
|
@ -1,29 +1,23 @@
|
||||||
use std::cmp::{max, min};
|
|
||||||
mod arr;
|
mod arr;
|
||||||
struct Solution {}
|
struct Solution {}
|
||||||
|
|
||||||
impl Solution {
|
impl Solution {
|
||||||
pub fn max_frequency(nums: Vec<i32>, k: i32, num_operations: i32) -> i32 {
|
pub fn has_same_digits(s: String) -> bool {
|
||||||
let mut ans = 0;
|
let n = s.len() - 2;
|
||||||
let mut arr = vec![0; 1_000_00 + 10];
|
let s = s.chars().collect::<Vec<_>>();
|
||||||
let mut arr2 = vec![0; 1_000_00 + 10];
|
let (mut p1,mut p2) = (0,0);
|
||||||
for &num in nums.iter() {
|
let mut base = 1_u128;
|
||||||
let l = max(num - k, 0);
|
let mut k = 0;
|
||||||
let r = min(1_000_00 + 1, num + k);
|
for i in 0..=n {
|
||||||
arr[l as usize] += 1;
|
p1 += base * (s[i].to_digit(10).unwrap() as u128);
|
||||||
arr[r as usize + 1] -= 1;
|
p2 += base * (s[i+1].to_digit(10).unwrap() as u128);
|
||||||
arr2[num as usize] += 1;
|
base = base * (n as u128 - k) / (k+1);
|
||||||
|
k+=1;
|
||||||
}
|
}
|
||||||
let mut base = 0;
|
p1 % 10 == p2 % 10
|
||||||
for i in 0..arr.len() {
|
|
||||||
base += arr[i];
|
|
||||||
let local_ans = min(arr2[i] + num_operations, base);
|
|
||||||
ans = max(ans, local_ans);
|
|
||||||
}
|
|
||||||
ans
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
println!("{:?}", Solution::max_frequency(vec![1, 1, 1, 4, 5], 1, 2));
|
println!("{:?}", Solution::has_same_digits("50656587913386788475086249545073".to_string()));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue