LeetCode---(6)ZigZag Conversion

转载 2015年07月10日 19:59:19

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".

主要是3个公式:
1 之字形行数为nRows,那么每次重复样出现前的间隔字符为zigSpan = nRows*2-2;
2 第一行和最尾一行都是存放一个字符的,所以存储的字符为间隔为zigSpan的字符
3 中间行是需要额外存储多一个字符的,存储的字符位置是: zigSpan + j - 2*i
class Solution {
public:
    string convert(string s, int numRows) {
        if(numRows<=1||s.size()==0)
            return s;
        string res;
        int zigSpan = numRows*2-2;
        for(int i=0;i<numRows;i++)
        {
            for(int j=i;j<s.size();j+=zigSpan)
            {
                res.push_back(s[j]);
                if(i!=0&&i!=numRows-1&&zigSpan+j-2*i<s.size())
                    res.push_back(s[zigSpan+j-2*i]);
            }
        }
        return res;
    }
};



[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
  • 718

【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
  • 410

[Java]leetcode6 ZigZag Conversion

[Java]leetcode ZigZag Conversion
  • fumier
  • fumier
  • 2015年04月12日 11:17
  • 643

[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
  • 1292

Leetcode_6_ZigZag Conversion

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

ZigZag Conversion (C实现)

The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you...
  • u014056175
  • u014056175
  • 2015年09月08日 14:40
  • 323

[LeetCode] 006. ZigZag Conversion (Easy) (C++/Java/Python)

[LeetCode] 006. ZigZag Conversion (Easy) (C++/Java/Python)
  • hcbbt
  • hcbbt
  • 2015年02月28日 00:13
  • 2372

leetcode 6 ZigZag Conversion C++

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

LeetCode::Zigzag Conversion C语言

题目 The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this...
  • u013300875
  • u013300875
  • 2015年03月07日 22:36
  • 1166

【LeetCode】ZigZag Conversion 解题报告

【题目】 The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like th...
  • ljiabin
  • ljiabin
  • 2014年10月26日 16:49
  • 22499
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LeetCode---(6)ZigZag Conversion
举报原因:
原因补充:

(最多只允许输入30个字)