[Leetcode]ZigZag Conversion 笨方法
class Solution {
public:
string convert(string s, int numRows) {
string res;
int len = s.size();
if(!len) return res;
if(numRows == 1) return s;
int n = 2 * numRows - 2;
int j = 0;
for(;j <= numRows - 1;++j){
for(int i = 0;i < len;++i){
if(i % (n) == j || i % (n) == (n - j)){
res += s[i];
}
}
}
return res;
}
};
不出所料的效率低下,不过应该可以用哈希表搞一下..唔,用哈希表出现了新问题,暂时无法实现。不过看到这种解法
class Solution
{
public:
string convert(string s, int nRows)
{
vector<string> v(nRows);
for(int i = 0; i < s.size(); )
{
for(int j = 0; i < s.size() && j < nRows; ++i, ++j)
v[j] += s[i];
for(int j = nRows-2; i < s.size() && j > 0; ++i, --j)
v[j] += s[i];
}
string res = "";
for(int i = 0; i < nRows; ++i)
res += v[i];
return res;
}
};
写这个方法的人说,时间复杂度是O(n),这样也算?明明跟我一样用了两层迭代呀,疑惑中。。。不过效率比我的高是确定的,有学习的价值
浙公网安备 33010602011771号