您的位置:首页 > 编程语言 > Java开发

ZigZag Conversion @leet code java

2014-11-02 17:19 211 查看
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()==0||nRows<=0){return "";}

        if(nRows==1){return s;}

        StringBuilder sp=new StringBuilder();

        int flag=0;

        int odd=0;

        for(int i=0;i<nRows;i++){

            flag=i;

            odd=0;

            while(flag<s.length()){

                sp.append(s.charAt(flag));

               if(i==0||i==nRows-1){

                flag+=(2*nRows-2);

            }else{

                if(odd==0){

                    odd=1;

                    flag+=2*nRows-2*i-2;

                }else{

                    odd=0;

                    flag=flag+2*i;

                }

            }  

            }

           

        }

        return sp.toString();

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: