ZigZag Conversion

    xiaoxiao2021-03-25  193

    题目

    -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”.

    解题思路

    本题的关键是找到规律通过举例子可以知道周期为2*nRows-2;先得出首行和尾行的字符,然后再加上中间的字符。 class Solution { public: string convert(string s, int nRows) { int len = s.length(); if (len == 0 || nRows < 2) return s; string ret = ""; int lag = 2*nRows - 2; //循环周期 for (int i = 0; i < nRows; i++) { for (int j = i; j < len; j += lag) { char c = s[j]; ret += c; //非首行和末行时还要加一个 if (i > 0 && i < nRows-1) { int t = j + lag - 2*i; if (t < len) { char d = s[t]; ret += d; } } } } return ret; } };
    转载请注明原文地址: https://ju.6miu.com/read-2426.html

    最新回复(0)