[leetcode] 6. ZigZag Conversion
2016-01-14 16:26
344 查看
The string
this: (you may want to display this pattern in a fixed font for better legibility)
And then read line by line:
Write the code that will take a string and make this conversion given a number of rows:
return
这道题是之字形转换字符串,题目难度为easy。
看了示例会发现,两个完整的列(如示例中的“PAY”、“ALI”)之间会有numRows-2个字符,这样整个字符串就划分成了很多个numRows+numRows-2个字符串(尾部不一定满足),这样第一行和最后一行就可以以此为间隔依次取原字符串中字符生成,中间的行需要加上之字形中间的字符,这里其实就是下标计算的问题,注意不要越界,具体请查看代码。具体代码:
"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。
看了示例会发现,两个完整的列(如示例中的“PAY”、“ALI”)之间会有numRows-2个字符,这样整个字符串就划分成了很多个numRows+numRows-2个字符串(尾部不一定满足),这样第一行和最后一行就可以以此为间隔依次取原字符串中字符生成,中间的行需要加上之字形中间的字符,这里其实就是下标计算的问题,注意不要越界,具体请查看代码。具体代码:
class Solution { public: string convert(string s, int numRows) { if(numRows <= 0) return ""; if(numRows == 1) return s; string rst = ""; int sz = s.size(); for(int i=0; i<numRows; ++i) { int idx = i; while(idx < sz) { rst += s[idx]; if(i!=0 && i!=numRows-1) { idx += (numRows-1-i)*2; if(idx >= sz) break; else rst += s[idx]; idx += i*2; } else idx += (2*numRows-2); } } return rst; } };
相关文章推荐
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- leetcode----Longest Substring Without Repeating Characters
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum
- [LeetCode] Find the k-th Smallest Element in the Union of Two Sorted Arrays
- [LeetCode] Determine If Two Rectangles Overlap
- [LeetCode] A Distance Maximizing Problem
- leetcode_linearList
- leetcode_linearList02
- 021-Merge Two Sorted Lists(合并两个排好序的单链表);leetcode
- LeetCode[Day 1] Two Sum 题解
- LeetCode[Day 2] Median of Two Sorted Arrays 题解
- LeetCode[Day 3] Longest Substring Without... 题解
- LeetCode [Day 4] Add Two Numbers 题解