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 };
  • 相关阅读:
    SpringBoot list查询方法
    eclipse创建web项目
    loadrunner获取返回值为乱码
    连接数据库
    lr并发量和迭代的区别
    LoadRunner11.00入门教程出现的问题
    python学习杂记--函数参数的设置
    adb logcat的命令行开启和关闭
    python学习杂记--pycharm控制台输出乱码
    python学习杂记--装饰器
  • 原文地址:https://www.cnblogs.com/easonliu/p/3695034.html
Copyright © 2011-2022 走看看