【问题标题】:Rust not accepting input correctly using read_lineRust 没有使用 read_line 正确接受输入
【发布时间】:2021-04-03 22:00:53
【问题描述】:

我目前正在执行practice codeforces problem,我的代码应该检查是否可以通过在任何位置添加“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");
            }
        }
    }
}

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

【问题讨论】:

    标签: algorithm rust


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2015-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多