So I’m trying to solve this problem that asks to look for palindromes in strings, so seems like I’ve got everything right, however the problem is with the output.
Here’s the original and my out put:
http://pastebin.com/c6Gh8kB9
Here’s whats been said about input and input of the problem:
Input format :
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).
Output format :
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.
Here’s how I read the input :
string test;
string original;
while (getline(fin,test))
original += test;
And here’s how I output it:
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() is a function to remove the illegal characters from the beginning and the end. I’m guessing that the problem is with \n’s and the way I read the input. How can I fix this ?
does not imply that every line is 80 characters except for the last, while your output code does assume this by taking 80 characters off
answerin every iteration.You may want to keep the newlines in the string until the output phase. Alternatively, you might store newline positions in a separate
std::vector. The first option complicates your palindrome search routine; the second your output code.(If I were you, I’d also index into
answerinstead of taking chunks off withsubstr/erase; your output code is now O(n^2) while it could be O(n).)