zoukankan      html  css  js  c++  java
  • LeetCode6 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".   (Easy)

    分析:

    首先是理解题意,题目例子举得不好...起始ZigZag的意思以4举例更易懂一些。

    1           7             13

    2      6   8        12

    3   5      9   11

    4          10

    读懂了题意,其实就是判断好什么时候向下,什么时候向上即可,我用的vector<string>实现,维护nRows个string,最后拼接在一起。

    代码:

     1 class Solution {
     2 public:
     3     string convert(string s, int numRows) {
     4         if (numRows == 1) {
     5             return s;
     6         }
     7         vector<string> v(numRows);
     8         int j = 0;
     9         for (int i = 0; i < s.size(); ++i) {
    10             if ( (i / (numRows - 1) ) % 2 == 0) {
    11                 v[j].insert(v[j].end(), s[i]);
    12                 j ++;
    13             } 
    14             if ( (i / (numRows - 1)) % 2 == 1) {
    15                 v[j].insert(v[j].end(), s[i]);
    16                 j--;
    17             }
    18        }
    19        string result;
    20        for (int i = 0; i < v.size(); ++i) {
    21            result += v[i];
    22        }
    23        return result;
    24     }
    25 };
  • 相关阅读:
    会议记录-5月20日
    会议记录-5月19日
    会议记录—5月18日
    会议记录-5月17日
    会议记录-5月16日
    会议记录-5月13日
    团队博客
    学习进度总结
    校外实习总结
    校外实习报告(二十)
  • 原文地址:https://www.cnblogs.com/wangxiaobao/p/5730844.html
Copyright © 2011-2022 走看看