ZigZag Conversion:
第一次做的时候一直在找规律,找到2*n-2之类的,这样思考解题思路很简单,但是编码起来很麻烦,循环的跳出条件很难确定,导致一直在debug。最后还是在网上找到了一份答案,这份答案是直接从头扫到尾,把不同行的字符放到字符串数组的对应位置。也就是说不必横着一行一行看,而是向下搜索,在斜着向上搜索,以此类推,我也是学到了变换思维的好处。同时如果是我来写这份代码的话,我会图省事把不同行的字符扔到map里,但是答案用了字符串数组来存储,之前也看到过数组的类似用法,感觉很好用,也学习一下。
string convert(string s, int nRows){
if(nRows == 1) return s;
string res[nRows];
int i = 0, j, gap = nRows-2;
while(i < s.size()){
for(j = 0; i < s.size() && j < nRows; ++j) res[j] += s[i++];
for(j = gap; i < s.size() && j > 0; --j) res[j] += s[i++];
}
string str = "";
for(i = 0; i < nRows; ++i)
str += res[i];
return str;
}