zoukankan      html  css  js  c++  java
  • LeetCode 006 ZigZag Conversion

    题目描述: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".

    分析:

    对于每一层垂直元素的坐标 ( i, j ) = ( j + 1) ∗ n + i;对于每两层垂直元素之间的插入元素(斜对角元素), ( i, j ) = ( j + 1) ∗ n − i。

    代码如下:

    class Solution {
    public:
        string convert(string s, int nRows) {
            
            if(nRows <= 1 || s.size() <= 1) return s;
            string result;
            
            for(int i = 0; i < nRows; i++){
                for(int j = 0, index = i; index < s.size(); j++, index = (2 * nRows - 2) * j + i){
                    result.append(1, s[index]);
                    if(i == 0 || i == nRows - 1) continue;
                    if(index + (nRows - i - 1) * 2 < s.size())
                        result.append(1, s[index + (nRows - i - 1) * 2]);
                }
            }
            
            return result;
            
        }
    };

     

  • 相关阅读:
    CodeForces
    EOJ 3506. 斐波那契数列
    牛客练习赛13 D幸运数字Ⅳ . 康托逆展开
    UVA
    Piggy-Bank HDU
    Dollar Dayz POJ
    UVA 674 Coin Change (完全背包)
    python OOP (1)
    python lambda简易使用
    python whl模块安装方法
  • 原文地址:https://www.cnblogs.com/510602159-Yano/p/4278658.html
Copyright © 2011-2022 走看看