diff --git a/src/main.rs b/src/main.rs index f0735b0..5b4b30d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,62 +3,50 @@ mod tree; struct Solution {} impl Solution { - pub fn min_window(s: String, t: String) -> String { - let s = s.chars().collect::>(); - let t = t.chars().collect::>(); - if t.len() == 1 && s[0] == t[0] { - return t.iter().collect(); - } - let mut arr2 = vec![0; 123]; - let mut arr1 = vec![0; 123]; - // 65-90 97-122 - //return "".to_string(); - for c in t.iter() { - arr2[*c as usize] += 1; - } - // let (mut l, mut r)= (-1, -1) - let mut ans = 10000000; - let mut ans_index = 100000000; - let mut l = 0; - let mut is_find_ans = false; - for r in 0..s.len() { - let cur = s[r] as usize; - arr1[cur] += 1; - if (is_find_ans && s[l] as usize == cur || !is_find_ans) && arr1[cur] >= arr2[cur] { - if || -> bool { - for i in 65..=90 { - if arr1[i] < arr2[i] { - return false; - } - } - for i in 97..=122 { - if arr1[i] < arr2[i] { - return false; - } - } - return true; - }() { - while arr1[s[l] as usize] > arr2[s[l] as usize] { - arr1[s[l] as usize] -= 1; - l += 1; - } - is_find_ans = true; - if r - l + 1 < ans { - ans = r - l + 1; - ans_index = l; - } - } + pub fn my_atoi(s: String) -> i32 { + let mut ans = 0_i64; + let mut neg = false; + let s = s.chars().collect::>(); + let mut start = 0; + for i in 0..s.len() { + if s[i] == ' ' { + start = i + 1; + continue; } + start = i + if s[i] == '+' || s[i] == '-' { + if s[i] == '-' { + neg = true + } + 1 + } else { + 0 + }; + break; } - if ans_index == 100000000 { - return "".to_string(); + for i in start..s.len() { + if s[i] == '0' { + start = i + 1; + continue; + } + break; } - s[ans_index..ans_index + ans].iter().collect() + for i in start..s.len() { + let c = s[i]; + if c.is_ascii_digit() { + ans = ans * 10 + if neg { -1 } else { 1 } * (c as u8 - '0' as u8) as i64; + if ans > i32::MAX as i64 { + return i32::MAX; + } + if ans < i32::MIN as i64 { + return i32::MIN; + } + continue; + } + break; + } + ans as i32 } } fn main() { - println!( - "{:?}", - Solution::min_window("cabwefgewcwaefgcf".to_string(), "cae".to_string()) - ); + println!("{:?}", Solution::my_atoi("1337c0d3".to_string())); }