Solve valid-number.
This commit is contained in:
		
							parent
							
								
									9512a94b6d
								
							
						
					
					
						commit
						23f5b6b769
					
				| 
						 | 
					@ -18,6 +18,7 @@ pub mod roman_to_integer;
 | 
				
			||||||
pub mod set_mismatch;
 | 
					pub mod set_mismatch;
 | 
				
			||||||
pub mod two_sum;
 | 
					pub mod two_sum;
 | 
				
			||||||
pub mod valid_anagram;
 | 
					pub mod valid_anagram;
 | 
				
			||||||
 | 
					pub mod valid_number;
 | 
				
			||||||
pub mod valid_palindrome;
 | 
					pub mod valid_palindrome;
 | 
				
			||||||
pub mod valid_parenthesis;
 | 
					pub mod valid_parenthesis;
 | 
				
			||||||
pub mod word_pattern;
 | 
					pub mod word_pattern;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,23 @@
 | 
				
			||||||
 | 
					pub fn is_number(string: String) -> bool {
 | 
				
			||||||
 | 
					  let string = string.to_lowercase();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if string.contains("inf") || string.contains("nan") {
 | 
				
			||||||
 | 
					    return false;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  let mut parts = string.split("e");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  let valid_significand = match parts.next() {
 | 
				
			||||||
 | 
					    Some(part) => part.parse::<f64>().is_ok(),
 | 
				
			||||||
 | 
					    None => unreachable!(),
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  let valid_exponent = match parts.next() {
 | 
				
			||||||
 | 
					    Some(part) => part.parse::<isize>().is_ok(),
 | 
				
			||||||
 | 
					    None => true,
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  let nothing_remaining = parts.next().is_none();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  valid_significand && valid_exponent && nothing_remaining
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,13 @@
 | 
				
			||||||
 | 
					use leetcode::valid_number::is_number;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use test_case::test_case;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#[test_case("0", true; "example 1")]
 | 
				
			||||||
 | 
					#[test_case("e", false; "example 2")]
 | 
				
			||||||
 | 
					#[test_case(".", false; "example 3")]
 | 
				
			||||||
 | 
					#[test_case("-inf", false; "infinity")]
 | 
				
			||||||
 | 
					#[test_case("NaN", false; "not a number")]
 | 
				
			||||||
 | 
					#[test_case("", false; "empty")]
 | 
				
			||||||
 | 
					fn test_valid_number(input: &str, expected: bool) {
 | 
				
			||||||
 | 
					  assert_eq!(is_number(input.to_string()), expected);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue