Leetcode:Question6--zigzag
题目描述
题目分析
这道题目要求字符串以曲折形式输出,因此可以根据要显示的曲折字符串的行数n来确定有n个容器,接着遍历字符串将对应位置的字母放在对应的容器里。以行数为4为例,从左到右遍历每个字母依次放在1,2,3,4,3,2,1,。。。。号桶。代码也以这种思想编写即可
#include <iostream>
using namespace std;
class Solution {
public:
string convert(string s, int numRows) {
if (numRows < 2) {
return s;
}
else {
string result[numRows];
bool flag = true;
int num = 0;
for (int i = 0; i < s.size(); ++i) {
result[num] += s[i];
if (num == 0) {
flag = true;
}
if (num == numRows - 1) {
flag = false;
}
if (flag == true) {
num ++;
}
else if (flag == false) {
num --;
}
}
string final;
for (int i = 0; i < numRows; ++i) {
final = final + result[i];
}
return final;
}
}
};
复杂度分析
这个算法的时间复杂度在于遍历一次字符串,因此时间复杂度为o(n)
最后