diff --git a/problems/0093.复原IP地址.md b/problems/0093.复原IP地址.md index a825b815..1f99a7a5 100644 --- a/problems/0093.复原IP地址.md +++ b/problems/0093.复原IP地址.md @@ -566,14 +566,24 @@ function restoreIpAddresses(s: string): string[] { ```Rust impl Solution { - fn is_valid(s: &Vec, start: usize, end: usize) -> bool { - if start > end { return false; } - if s[start] == '0' && start != end { return false; } + fn is_valid(s: &[char], start: usize, end: usize) -> bool { + if start > end { + return false; + } + if s[start] == '0' && start != end { + return false; + } let mut num = 0; - for i in start..=end { - if s[i] > '9' || s[i] < '0' { return false; } - if let Some(digit) = s[i].to_digit(10) { num = num * 10 + digit; } - if num > 255 { return false; } + for &c in s.iter().take(end + 1).skip(start) { + if !('0'..='9').contains(&c) { + return false; + } + if let Some(digit) = c.to_digit(10) { + num = num * 10 + digit; + } + if num > 255 { + return false; + } } true }