[LeetCode]6. ZigZag Conversion (medium)

标签: LeetCode
2人阅读 评论(0) 收藏 举报
分类:

Welcome To My Blog

6. ZigZag Conversion (medium)

6.1.png
题目意思:将一个字符串按照之字形(zigzag)排列,然后按行输出,如下图:
6.2.png
1. 核心思想:之字形排列可以分解为两步:向下竖直排列;斜向上排列,竖直在前,斜在后,通过两个循环分别实现两个分解动作,再通过一个大循环遍历所有元素
2. 数组约束i与StringBuffer约束row相互独立,故分别判断i与row是否越界
3. 学习了StringBuffer的用法,这里可以用StringBuilder,速度更快.因为StringBuffer是线程安全的,但StringBuilder不是,所以StringBuilder更快
4. complexity analysis:
+ time complexity: O(n / (2numsRow - 2))
+ space complexity: O(n)

class Solution {
    public String convert(String s, int numRows) {
        char[] c = s.toCharArray();
        int n = c.length;
        StringBuffer[] currRow = new StringBuffer[numRows];
        // 初始化StringBuffer
        for (int row = 0; row < numRows; row++)
            currRow[row] = new StringBuffer();
        // zigzag可分解为两个基础步骤:竖直运动,倾斜运动
        // i表示字符串中的字符索引,其大小由内部循环控制,故使用while
        int i = 0;
        while (i < n){
            // 竖着添加
            //因为i自加,所以每次循环都要检查i是否越界
            for (int row = 0; row < numRows && i< n; row++){
                currRow[row].append(c[i++]);
            }
            // 斜着添加
            for (int row = numRows - 2; row > 0 && i< n; row--){
                currRow[row].append(c[i++]);
            }
        }
        //转换成一行字符
        for (int row = 1; row < numRows; row++ )
            currRow[0].append(currRow[row]);
        return currRow[0].toString();

    }
}

6.3.png

查看评论

SQL Server XML 和 Web 应用体系结构

SQL Server XML 和 Web 应用体系结构John A. BocharovMicrosoft Developer Network摘要: 本文概要介绍在一组基于 SQL Server XML...
  • ghj1976
  • ghj1976
  • 2001-05-25 14:30:00
  • 1452

Leetcode_6_ZigZag Conversion

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/41408021 看完这篇文章,你可能会学到到知识如下: ...
  • pistolove
  • pistolove
  • 2014-11-23 09:45:55
  • 2785

[Java]leetcode6 ZigZag Conversion

[Java]leetcode ZigZag Conversion
  • fumier
  • fumier
  • 2015-04-12 11:17:26
  • 690

6. ZigZag Conversion Leetcode Python

The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you...
  • hyperbolechi
  • hyperbolechi
  • 2015-01-28 02:21:14
  • 1032

[Leetcode]6. ZigZag Conversion @python

题目The string “PAYPALISHIRING” is written in a zigzag pattern on a given number of rows like this: (y...
  • qian2729
  • qian2729
  • 2016-01-13 00:32:16
  • 848

LeetCode 6 ZigZag Conversion (C,C++,Java,Python)

Problem: The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows l...
  • runningtortoises
  • runningtortoises
  • 2015-05-06 22:55:25
  • 1142

【python】【leetcode】【算法题目6—ZigZag Conversion】

一、题目描述 题目原文:   The string "PAYPALISHIRING" is written in a zigzag pattern on a given number...
  • u014615155
  • u014615155
  • 2016-11-26 15:44:31
  • 478

leetcode 6 ZigZag Conversion C++

这道题最大的难点在理解题意。。。 它是一个折线图样子的。 string convert(string s, int numRows) { string result = ""; ...
  • a2331046
  • a2331046
  • 2016-06-28 10:52:31
  • 248

[LeetCode][6]ZigZag Conversion解析与特殊解法 -Java实现

Q: The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this...
  • u014629433
  • u014629433
  • 2016-06-06 14:29:53
  • 2220

【LeetCode】LeetCode——第6题:ZigZag Conversion

【LeetCode】LeetCode——第6题:ZigZag Conversion
  • hujingshuang
  • hujingshuang
  • 2016-04-19 10:09:57
  • 1583
    个人资料
    持之以恒
    等级:
    访问量: 1336
    积分: 431
    排名: 11万+
    文章存档