首页 > 解决方案 > Rust 没有使用 read_line 正确接受输入

问题描述

我目前正在做一个练习 codeforces 问题,我的代码应该通过在任何位置添加一个“a”来检查是否有可能使字符串不是回文,如果是则返回是和正确的字符串,如果是则返回否不是。

如果我只有 2 行输入(包含案例数和字符串),我的代码可以正常工作:

1
a
(returns no)

但是如果我有更多,它会由于某种原因开始不起作用:

2
a
a
(returns yes for first "a", and no for second)

这是我的代码:

use std::io;

fn main() {
    let mut input = String::new();
    io::stdin().read_line(&mut input).expect("");
    let num = input.trim().parse::<i32>().unwrap();

    for _ in 0..num {
        let mut word = String::new();
        io::stdin().read_line(&mut word).unwrap();

        for c in 0..word.len() {
            let mut wordtemp = word.clone();
            wordtemp.insert(c, 'a');
            if wordtemp != wordtemp.chars().rev().collect::<String>() {
                println!("YES");
                print!("{}", wordtemp);
                break;
            } else if c == word.len()-1 {
                println!("NO");
            }
        }
    }
}

我已经被困了一段时间,不知道是什么导致它无法工作,所以任何帮助将不胜感激!

标签: algorithmrust

解决方案


我最终解决了我的问题!我将其发布在这里并编辑我的问题,以防其他人将来遇到同样的问题。我使用 接受输入read_line,其中包括空格。要删除空格,您应该使用.trim().

let mut word = String::new();
        io::stdin().read_line(&mut word).unwrap();
        word = word.trim().to_string();

推荐阅读