gpt4 book ai didi

c++ - 输入、输出和\n

转载 作者:行者123 更新时间:2023-11-30 03:08:08 27 4
gpt4 key购买 nike

所以我正在尝试解决这个要求在字符串中寻找回文的问题,看起来我已经做对了一切,但问题出在输出上。

这是原文和我的输出: http://pastebin.com/c6Gh8kB9

这里是关于问题的输入和输入的内容:

输入格式:

A file with no more than 20,000 characters. The file has one or more lines. No line is longer than 80 characters (not counting the newline at the end).

输出格式:

The first line of the output should be the length of the longest palindrome found. The next line or lines should be the actual text of the palindrome (without any surrounding white space or punctuation but with all other characters) printed on a line (or more than one line if newlines are included in the palindromic text). If there are multiple palindromes of longest length, output the one that appears first.

这是我读取输入的方式:

string test;
string original;

while (getline(fin,test))
original += test;

下面是我的输出方式:

int len = answer.length();
answer = cleanUp(answer);
while (len > 0){
string s3 = answer.substr(0,80);
answer.erase(0,80);
fout << s3 << endl;
len -= 80;
}

cleanUp() 是一个函数,用于删除开头和结尾的非法字符。我猜问题出在\n 和我读取输入的方式上。我该如何解决这个问题?

最佳答案

No line is longer than 80 characters (not counting the newline at the end)

并不意味着除最后一行外每行都是 80 个字符,而您的输出代码通过在每次迭代中从 answer 中取出 80 个字符来假设这一点。

您可能希望在输出阶段之前保留字符串中的换行符。或者,您可以将换行符位置存储在单独的 std::vector 中。第一个选项使您的回文搜索例程复杂化;第二个是你的输出代码。

(如果我是你,我也会索引到 answer 而不是用 substr/erase 删除 block ;你的输出代码现在是 O(n^2) 而它可能是 O(n).)

关于c++ - 输入、输出和\n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5290782/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com