zoukankan      html  css  js  c++  java
  • [Leetcode] 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".

    注意如果用push_back的话会超内存,因为每次push_back后如果空间不够则新空间会是原来的两倍,为了避免这种情况还是直接定义长度为len的字符串吧。题目根本就没说清楚嘛, 下面是n=4时的结果:

    P     I     N
    A   L S   I G
    Y A   H R
    P I

     1 class Solution {
     2 public:
     3     string convert(string s, int nRows) {
     4         int len = s.length();
     5         if (len <= nRows || nRows == 1) return s;
     6         int steps;
     7         string res;
     8         res.resize(len);
     9         int idx = 0;
    10         for (int i = 0; i < nRows; ++i) {
    11             if (i == nRows - 1) steps = 2 * (nRows - 1);
    12             else steps = 2 * (nRows - i - 1);
    13             
    14             if (i == 0 || i == nRows - 1) {
    15                 for (int j = i; j < len; j += steps) {
    16                     res[idx] = s[j];
    17                     ++idx;
    18                 }
    19             } else {
    20                 bool flag = true;
    21                 for (int j = i; j < len;) {
    22                     res[idx] = s[j];
    23                     ++idx;
    24                     if (flag) j += steps;
    25                     else j += (2 * (nRows - 1) - steps);
    26                     flag = !flag;
    27                 }
    28             }
    29         }
    30         return res;
    31     }
    32 };
  • 相关阅读:
    Win32程序支持命令行参数的做法
    打包jar类库与使用jar类库
    Java日期格式化
    集合类层次结构关系
    深入理解Arrays.sort()
    Java 异常类层次结构
    equals()与hashCode()方法协作约定
    shp数据和tab数据的两点区别
    java+上传文件夹
    vue+大文件分片上传
  • 原文地址:https://www.cnblogs.com/easonliu/p/3695034.html
Copyright © 2011-2022 走看看