Leetcode-6. ZigZag Conversion

来源:互联网 发布:手机端回到顶部 js 编辑:程序博客网 时间:2024/06/05 09:39

一、问题描述

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   NA P L S I I GY   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".


二、思路分析

由题可以看出,周期为2*rows-2;除首行和末行外其余的行在每个周期里都有两个字符,,首行和末行只有一个字符该字符距离该行起始字符的位置为2*rows-2-2*i,其中i为当前行数。

三、代码

class Solution {public:string convert(string s, int n) {    string res;    if (n == 1) { //行数为一,直接返回原字符串        return s;    }for (int i = 0; i < n; i++) {for (int  j = i; j < s.length(); j += (2*n-2)) {res += s[j];if (i > 0&& i < n-1) {if ((j + 2*n-2-2*i) < s.length()) {res += s[j+2*n-2-2*i];}}}}return res;}};


原创粉丝点击