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);
}
  • Flipper@feddit.org
    link
    fedilink
    arrow-up
    0
    ·
    6 个月前

    There is a much nicer way of checking.

    Rust iterators are really powerful. Try using them instead of loops, whenever you can.

    Tap for solution
    let is_palindrome = input.chars().eq(input.chars().rev());
    

    As you can see, the intent is much clearer instead of indexing into the loops. Technically this does however twice as many comparisons. They can be avoided with take and half the size of the iterator.