這次是看了大佬的算法后自己用C++寫(xiě)出來(lái)的,雖然沒(méi)有正確答案對(duì)照,更加費(fèi)時(shí)浆西,但是自己一點(diǎn)點(diǎn)實(shí)現(xiàn)想法來(lái)的更有成就感。(那個(gè)大佬是用的python寫(xiě)的顽腾,不然你以為我想!!!!)
class Solution {
public:
string convert(string s, int numRows) { //模擬實(shí)際人工書(shū)寫(xiě)操作
if(numRows<2){ //若numRows=1,直接返回
return s;
}
string res[numRows]; // 用字符串存儲(chǔ)每一行的字符
int rowflag=0; //正在書(shū)寫(xiě)的行標(biāo)
bool direction=true; //書(shū)寫(xiě)方向
for(int i=0;i<s.size();i++){
res[rowflag]+=s[i]/*.append(s[i])*/; //在對(duì)應(yīng)行寫(xiě)入字符
//下面增加行標(biāo)和近零,對(duì)最低行和最頂行的判斷和處理
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;
}
};