AnDeriensのブログ

個人的なブログです

初心者がRustで解くatCoder ABC187 A - Large Digits

イントロ

Rustの文法勉強のためにatCoderのA問題解いてみたのでその記録です。 ほんとうに最初の文法を少しかじったくらいなので、間違っていることはあると思います。ご容赦ください。

実装

Submission #28516468 - AtCoder Beginner Contest 187

use std::io;

fn main() {
    let mut input = String::new();
    io::stdin().read_line(&mut input).expect("Yeah.");

    let vec: Vec<&str> = input.split_whitespace().collect();

    let input_1: &str = vec[0];
    let input_2: &str = vec[1];

    let sum_1 = sum_from_str(input_1);
    let sum_2 = sum_from_str(input_2);

    if sum_1 > sum_2 {
        println!("{}", sum_1)
    } else {
        println!("{}", sum_2)
    }
}

fn sum_from_str(input: &str) -> i32 {
    let first_char: i32 = input.chars().nth(0).unwrap() as i32 - 48;
    let second_char = input.chars().nth(1).unwrap() as i32 - 48;
    let third_char = input.chars().nth(2).unwrap() as i32 - 48;
    return first_char + second_char + third_char;
}

調べたこと

文字列を空白で分割

split_whitespaceが使える

文字列操作 with Rust - Qiita

文字列と数値の変換

rust String &str の変換と、文字列 数値 の変換 - Qiita

所感

もうちょっと良い書き方ある気がする…。