Leetcode:Question6--zigzag

题目描述

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)
最后