Ich habe eine Zeichenfolge und Anzahl der Zeilen
n
gegeben. Drucken Sie die Zeichenfolge gebildet durch Verkettungn
Reihen, wenn Eingabezeichenfolge in zeilenweise Zig-Zag Art und Weise geschriebenPrint Verkettung von Zick-Zack-String in 'n' Zeilen
std::string str = convert("PAYPALISHIRING", 3); //str == "PAHNAPLSIIGYIR"
Hier ist ein visuelles Bild
P.......A........H.......N
..A..P....L....S....I...I....G
....Y.........I........R
Ich schrieb den folgenden Code
string Solution::convert(string A, int B) {//B is no of rows in zigzag pattern
if(B==1)
return A;
int n=B;
vector<string> vec;
int dir=0;//0 means down, 1 means up
int row=0;
for(int i=0;i<A.length();i++)
{
vec[row].append(A,i,1);
if(row==n-1)
dir=1;//change to upwards
if(row==0)
dir=0;//change to downwards
if(dir==0) row++;
else row--;
}
string ans="";
for(int i=0;i<B;i++)
ans.append(vec[i]);
return ans;
}
Aber für alle B >= 2
gibt es einen Segmentierungsfehler.
Irgendwelche Ideen?
Yeah ... Vielen Dank ... Es half !! –