[LeetCode] Zigzag Conversion
来源:互联网 发布:音频测试软件 编辑:程序博客网 时间:2024/06/04 00:52
The string "PAYPALISHIRING"
is written in a zigzagpattern on a given number of rows like this: (you may want todisplay this pattern in a fixed font for better legibility)
P A H NA P L S I I GY I RAnd then read line by line:
"PAHNAPLSIIGYIR"
Write the code that will take a string and make this conversiongiven a number of rows:
string convert(string text, int nRows);
convert("PAYPALISHIRING", 3)
should return"PAHNAPLSIIGYIR"
.[Analysis]
直接看几个例子就知道该怎么做了:
ABCDEFGHIJKLMNOP 2
A C E G I K M O
B D F H J L N P
ABCDEFGHIJKLMNOP 4
A G M
B F H L N
C E I K O
D J P
ABCDEFGHIJKLMNOP 5
A I
B H J P
C G K O
D F L N
E M
[Solution]
class Solution {
public:
string convert(string s, int nRows) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
// only one row
if(nRows == 1){
return s;
}
// more than one rows
int j = 0, k = 0; // jth column, k letters has been writen
string column;
// the matrix stores the zigzag writen letters
vector<string> matrix;
while(k < s.length()){
// the zigzag column, if nRows=2, it should not be zigzag writen
if(j % 2 == 1 && nRows > 2){
column = " ";
// out of range
if(nRows - 2 + k > s.length()){
column += s.substr(k, s.length() - k);
k += s.length() - k;
// fill remaining spaces
column += string(nRows - column.length(), ' ');
}
else{
column += s.substr(k, nRows - 2);
k += nRows - 2;
column += " ";
}
// reverse
reverse(column.begin(), column.end());
matrix.push_back(column);
}
else{
if(nRows + k > s.length()){
column = s.substr(k, s.length() - k);
k += s.length() - k;
}
else{
column = s.substr(k, nRows);
k += nRows;
}
matrix.push_back(column);
}
j++;
}
// generate result
string res = "";
for(int i = 0; i < nRows; ++i){
for(j = 0; j < matrix.size(); ++j){
// filter spaces
if(matrix[j].size() > i && matrix[j][i] != ' '){
res += matrix[j][i];
}
}
}
return res;
}
};
说明:版权所有,转载请注明出处。Coder007的博客
- LeetCode: ZigZag Conversion
- LeetCode : ZigZag Conversion
- leetcode 13:zigzag conversion
- [LeetCode] Zigzag Conversion
- LeetCode 6 - ZigZag Conversion
- Leetcode : ZigZag Conversion
- 【leetcode】Zigzag Conversion
- [LeetCode]ZigZag Conversion
- leetcode ZigZag Conversion
- LeetCode-ZigZag Conversion
- LeetCode ZigZag Conversion
- LeetCode 6: ZigZag Conversion
- leetcode-006:ZigZag Conversion
- Leetcode: ZigZag Conversion
- [LeetCode]ZigZag Conversion
- [LeetCode] ZigZag Conversion
- [LeetCode]ZigZag Conversion
- leetcode: ZigZag Conversion
- [LeetCode] Palindrome Partitioning
- [LeetCode] Text Justification
- Leetcode 105&106
- [LeetCode] Unique Binary Search Trees
- [LeetCode] Unique Binary Search Trees II
- [LeetCode] Zigzag Conversion
- [Interview Street] Track 1
- [Interview Street] Track 1
- 网络编程_网络编程基础
- [Cracking the Coding Interview] Chapter 1
- [Cracking the Coding Interview] Chapter 2
- [Cracking the Coding Interview] Chapter 3
- QWT编译、配置、使用(Qt Creator)
- 『默哀』你的梦或许因为这个新闻而碎了【用你的程序语言 抛出一行异常】