LeetCode之ZigZag Conversion

来源:互联网 发布:淘宝宝贝被管控下架 编辑:程序博客网 时间:2024/05/21 08:46
/*这道题是一道模拟题,只需要找出其中的规律即可。当n=4时,zagzag如下:n=40      6        121    5 7     11 132  4   8  10    143      9        15可以找出如下规律:1.每两个垂直列之间的下标差为2*(n - 1);2.倾斜列的元素的下标与它之前的垂直列的元素的下标差为2*(n - 1 - i),i为该元素对应的行下标。按照上面规律,即可解出该题。方法参考自:https://github.com/soulmachine/leetcode*/class Solution {public:string convert(string s, int nRows) {if(s.size() <= 1 || nRows <= 1) return s;string res;for(int i = 0; i < nRows; ++i){int idx = i;while(idx < s.size()){//将垂直列加入的输出字符串中res += s[idx];if(i > 0 && i < nRows -1 && idx + 2 * (nRows - 1 - i) < s.size()){//如果该元素后面跟随着倾斜列,且字符下标未超出string界限res += s[idx + 2 * (nRows - 1 - i)];}idx += 2 * (nRows - 1);//垂直列移动到下一列}}return res;}};

0 0
原创粉丝点击