【leetcode with java】6 ZigZag Conversion

来源:互联网 发布:淘宝代运营 诈骗 判刑 编辑:程序博客网 时间:2024/06/05 15:36
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   NA P L S I I GY   I   RAnd 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".
Tags: String


【思路】

(参考:http://www.cnblogs.com/sanghai/p/3632528.html)

  声明含有nRows个字符串的数组,每个数组用来存放ZigZag后的每一行,然后按照原来的顺序沿着ZigZag路线逐个把字符添加到对应的字符串尾部;

  最后将nRows个字符串合并为一个,即为要求的结果。

【上码】

/*
 * O(n^2) *  */public class Solution1 {public String convert(String s, int nRows) {if(s == null || s.length() == 0){ return ""; }StringBuffer[] stringBuffer = new StringBuffer[nRows];for(int i=0; i<nRows; i++){ stringBuffer[i] = new StringBuffer(); }int p = 0, len = s.length(), q;while(p < len){for(q=0; q<nRows & p<len; q++){ stringBuffer[q].append(s.charAt(p++)); }for(q-=2; q>0     & p<len; q--){ stringBuffer[q].append(s.charAt(p++)); }}for(int i=1; i<nRows; i++){stringBuffer[0].append(stringBuffer[i]);}return stringBuffer[0].toString();}}


0 0