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

ZigZag Conversion

时间:2014-10-16 13:38:52      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   os   ar   java   for   sp   

The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)

P   A   H   N
A P L S I I G
Y   I   R
And then read line by line: "PAHNAPLSIIGYIR"

Write the code that will take a string and make this conversion given a number of rows:

string convert(string text, int nRows);
convert("PAYPALISHIRING", 3) should return "PAHNAPLSIIGYIR".

答案

public class Solution {
    public String convert(String s, int nRows) {
        if(s==null||s.length()<=1||nRows==1)
        {
            return s;
        }
        StringBuilder result=new StringBuilder(s.length());
        int LEN=2*nRows-2;
        int times=s.length()/LEN+1;
        for(int row=0;row<nRows;row++)
        {
            int p1=row;
            int p2=row==nRows-1?LEN+row:LEN-row;
            if(p1<s.length())
            {
                 result.append(s.charAt(p1));
            }
            if(p2<s.length())
            {
                 result.append(s.charAt(p2));
            }
            for(int i=0;i<times;i++)
            {
                p1+=LEN;
                if(p1!=p2&&p1<s.length())
                {
                    result.append(s.charAt(p1));
                }
                p2+=LEN;
                if(p2<s.length())
                {
                    result.append(s.charAt(p2));
                }
            }
        }
        return result.toString();
    }
}


ZigZag Conversion

标签:style   blog   color   io   os   ar   java   for   sp   

原文地址:http://blog.csdn.net/jiewuyou/article/details/40146195

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