标签:
输入一串字符,(由上到下再由下向上)Z字形循环排列后,逐行打印输出。
例如:输入PAYPALISHIRING 输出PAHNAPLSIIGYIR
【我的代码】
string convert(string s,int nRows){ string::size_type i=0,j=0; string dst=""; int line=0; dst+=s[0]; int flag=0; while(i<s.size()&&line<nRows){ if((nRows-line-2)>=0&&(flag==0||line==0)) {//在上方 j=(nRows-line-2)*2+2; flag=1; } else if((line-1)>=0&&(flag==1||line==nRows-1)) { j=(line-1)*2+2; flag=0; } else ; if(i+j<s.size()){ dst+=s[i+j]; i=j; } else if((i+j>=s.size())&&(line<nRows-1)){ line++;//新行 i=line; dst+=s[i]; flag=0; } else break; } return dst; }
【评价】
十分繁琐…………
还是错的!!运行无能。。。没脸po在博客上%>_<%,忽略我。。。
【优美的别人的代码】
string convert(string s, int nRows) { string res[nRows]; int i = 0, j, gap = nRows-2; while(i < s.size()){ for(j = 0; i < s.size() && j < nRows; ++j) res[j] += s[i++]; for(j = gap; i < s.size() && j > 0; --j) res[j] += s[i++]; } string str = ""; for(i = 0; i < nRows; ++i) str += res[i]; return str; }
【评价】
几行就解决了有没有!我是弱智吧?……
标签:
原文地址:http://www.cnblogs.com/ketchups-notes/p/4225576.html