Solve reverse-integer.
This commit is contained in:
parent
a651f9ed80
commit
df1fa87bb3
|
@ -1 +1,2 @@
|
||||||
|
pub mod reverse_integer;
|
||||||
pub mod two_sum;
|
pub mod two_sum;
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
pub fn reverse(number: i32) -> i32 {
|
||||||
|
number
|
||||||
|
// Convert to an absolute number without wrapping or panicking.
|
||||||
|
.unsigned_abs()
|
||||||
|
// Convert the number to string, then reverse all its characters.
|
||||||
|
.to_string()
|
||||||
|
.chars()
|
||||||
|
.rev()
|
||||||
|
// Collect the reversed characters back into a string.
|
||||||
|
.collect::<String>()
|
||||||
|
// Parse the string into an i32.
|
||||||
|
.parse()
|
||||||
|
// If it returns an Err then use 0 instead.
|
||||||
|
.unwrap_or(0)
|
||||||
|
// Then multiply by 0, 1 or -1 depending on the sign of the original number.
|
||||||
|
* number.signum()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_reverse_integer() {
|
||||||
|
assert_eq!(reverse(123), 321);
|
||||||
|
assert_eq!(reverse(-123), -321);
|
||||||
|
assert_eq!(reverse(120), 21);
|
||||||
|
assert_eq!(reverse(i32::MAX), 0);
|
||||||
|
assert_eq!(reverse(i32::MIN), 0);
|
||||||
|
}
|
Loading…
Reference in New Issue