这次是看了大佬的算法后自己用C++写出来的,虽然没有正确答案对照,更加费时,但是自己一点点实现想法来的更有成就感。(那个大佬是用的python写的,不然你以为我想!!!!)
class Solution {
public:
string convert(string s, int numRows) { //模拟实际人工书写操作
if(numRows<2){ //若numRows=1,直接返回
return s;
}
string res[numRows]; // 用字符串存储每一行的字符
int rowflag=0; //正在书写的行标
bool direction=true; //书写方向
for(int i=0;i<s.size();i++){
res[rowflag]+=s[i]/*.append(s[i])*/; //在对应行写入字符
//下面增加行标和,对最低行和最顶行的判断和处理
int rerowflag=rowflag;
if(direction){
rowflag++;
}
else{
rowflag--;
}
if((rowflag==numRows)||rowflag==-1){
direction=!direction;
rowflag=rerowflag;
if(direction){
rowflag++;
}
else{
rowflag--;
}
}
}
string result;
for(int i=0;i<numRows;i++){
//cout<<"end"<<endl;
cout<<res[i]<<endl;
result+=res[i];
cout<<result<<endl;
}
return result;
}
};