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 two_sum;
 | 
			
		||||
pub mod valid_anagram;
 | 
			
		||||
pub mod valid_number;
 | 
			
		||||
pub mod valid_palindrome;
 | 
			
		||||
pub mod valid_parenthesis;
 | 
			
		||||
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