码迷,mamicode.com
首页 > 其他好文 > 详细

OJ练习5——T6

时间:2015-01-15 10:44:36      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:

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

标签:

原文地址:http://www.cnblogs.com/ketchups-notes/p/4225576.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!