题目
题目:[leetcode-6]
思路
这个题目的思路是把旧串的位置映射到新串的位置,把位置怎么走的,画个图就出来了。这个题目不难。
但是,我就想强调一点。
做的时候,别着急,把思路理清楚了去做。不就很快出来了。一步一步来
代码
/*
思路:这个题目的思路。
旧串的位置映射到新串的位置。
做的时候,别着急,把思路理清楚了去做。不就很快出来了。
一步一步来嘛。
*/
class Solution {
public:
string convert(string s, int numRows) {
if( 1==numRows )
return s;
std::vector< std::string > ret(numRows, std::string());
int sz = s.size();
int mod = numRows + (numRows - 2);
for( int i = 0; i < sz; ++i )
{
int ret_index = i %mod;
if( ret_index >= numRows ){
int offset = ret_index - (numRows-1);
ret_index = numRows - 1 - offset;
}
ret[ret_index].push_back( s[i] );
}
std::string ans = "";
for( int i = 0; i < numRows; ++i )
{
ans += ret[i];
}
return ans;
}
};