首页 > 代码库 > OJ练习5——T6
OJ练习5——T6
ZigZag Conversion
输入一串字符,(由上到下再由下向上)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; }
【评价】
几行就解决了有没有!我是弱智吧?……
OJ练习5——T6
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。