首页 > 其他 > 详细

【Leetcode】ZigZag Conversion

时间:2016-05-27 12:49:26      阅读:222      评论:0      收藏:0      [点我收藏+]

题目链接:https://leetcode.com/problems/zigzag-conversion/

题目:
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”.

思路:
将字符按Zig形填入map中,然后遍历map数组得到结果

算法:

    public String convert(String s, int numRows) {
        char map[][] = new char[numRows][s.length()/(numRows-1)+1];
        int k = 0;// 第几列
        for (int i = 0; i < map.length; i++) {
            for (int j = 0; j < map[0].length; j++) {
                    map[i][j]=‘ ‘;
            }
        }
        for (int i = 0; i < s.length();) {
            for (int j = 0; j < numRows && i < s.length(); j++, i++) {
                map[j][k] = s.charAt(i);
            }
            k++;
            for (int j = numRows - 2; j >= 1 && i < s.length(); j--, i++, k++) {
                map[j][k] = s.charAt(i);
            }

        }
        StringBuffer res = new StringBuffer();
        for (int i = 0; i < map.length; i++) {
            for (int j = 0; j < map[0].length; j++) {
                if (map[i][j]!=‘ ‘) {
                    res.append(map[i][j]);
                }
            }
        }
        return res.toString();
    }

【Leetcode】ZigZag Conversion

原文:http://blog.csdn.net/yeqiuzs/article/details/51483646

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!