菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
464
0

[Leetcode] ZigZag Conversion

原创
05/13 14:22
阅读数 279769

标签:blog   com   class   code   http   img   div   java   size   style   javascript   

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

bubuko.com,布布扣
 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 };
bubuko.com,布布扣

 

 

[Leetcode] ZigZag Conversion,布布扣,bubuko.com

[Leetcode] ZigZag Conversion

发表评论

0/200
464 点赞
0 评论
收藏
为你推荐 换一批