Rust code to find palindrome string in rust
Rust code to find palindrome string in rust
Hello,
As I said in the previous post that I have started learning Rust and made a simple fibonacci series generator. Today I made a palindrome string checker. it's very basic. I haven't used Enum or Struct in the code since I don't think it's necessary in this simple code.
here is the code:
use std::io; fn main() { let mut input = String::new(); let stdin = io::stdin(); stdin.read_line(&mut input).unwrap(); // we want to exit in case it couldn't read from stdin input = input.replace("\n", ""); // Removing newline let mut is_palindrome: bool = true; for i in 0..input.len()/2 { let first_char: &str = &input[i..i+1]; let last_char: &str = &input[input.len()-i-1..input.len()-i]; if first_char != "\n" { if first_char != last_char { is_palindrome = false; } } } println!("palindrome: {}", is_palindrome); }
There is a much nicer way of checking.
Rust iterators are really powerful. Try using them instead of loops, whenever you can.
wow, this is really awesome. you just made a single liner for this whole problem. I didn't know that you could do something like this since I don't know much about Rust yet.
There's so many useful methods for iterators its worth reading the doc page to familiarize yourself. Its wicked powerful: https://doc.rust-lang.org/std/iter/trait.Iterator.html
You only need to check half of the string, so I think a technically optimal solution would have some take_while and maybe char_indices in there...
That's exactly what I Hinted at in my post, though I would use take(input.size()/2). However I wouldn't be surprised if the compiler could short circuit it, but I haven't checked.