pull down to refresh

I found it was easier by looking through each methods subsequent methods after seeing the compile type mismatches. i32 -> as_str() -> bytes() (this is an iterator of bytes) -> rev() (this makes the iterator iterate in reverse) -> collect() (turns an iterator into a collection of the underlying type (bytes in this case).
Overall, I got more of the sense with Rust that you can use the compiler to your advantage instead of trying to work around it. But, I think there will be more complex things where that won't work out and I might work myself into a corner where I'll have to do some contortion to get out.
fn main() {}

pub fn is_palindrome(x: i32) -> bool {
    let x_str = x.to_string();
    let reversed_bytes: Vec<u8> = x_str.as_str().bytes().rev().collect();
    let reversed = match String::from_utf8(reversed_bytes) {
        Ok(reversed_str) => reversed_str,
        Err(err) => panic!("Problem getting string after reversed: {err:?}"),
    };
    return reversed == x_str;
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_example_1() {
        let x = 121;
        let answer = true;
        assert_eq!(is_palindrome(x), answer);
    }

    #[test]
    fn test_example_2() {
        let x = -121;
        let answer = false;
        assert_eq!(is_palindrome(x), answer);
    }

    #[test]
    fn test_example_3() {
        let x = 10;
        let answer = false;
        assert_eq!(is_palindrome(x), answer);
    }
}
reply
186 sats \ 7 replies \ @rblb 5 Jan
As a dev who rejects modernity and embrace tradition, this is my string based approach
    public boolean isPalindrome(int x) {
        String s = "" + x;
        int l = s.length();
        for(int i = 0;i < l;i++){
            int j = l-1-i;
            if (s.charAt(i)!=s.charAt(j)) return false;
        }
        return true;
    }
and integer based approach
    private int reverse(int n){
        int r = 0;
        while(n != 0) {
            int d = n % 10;        
            r = r * 10 + d;
            n = n / 10;
        }
        return r;
    }

     public boolean isPalindrome(int x) {
        if(x<0)return false;
        return reverse(x)==x;
    }
reply
deleted by author
reply
21 sats \ 5 replies \ @rblb 5 Jan
my way of saying that i don't use functional programming 🤣