6 Z 字形变换
补一个题目位置。https://leetcode-cn.com/problems/zigzag-conversion/
这题是输出控制,实现了就行。
我的想法:这些字母的排列是按 2 ∗ ( n u m R o w s − 1 ) 2*(numRows-1) 2∗(numRows−1)的方式呈周期性的,所以对 2 ∗ ( n u m R o w s − 1 ) 2*(numRows-1) 2∗(numRows−1)取余就可以了。要注意 n u m R o w s = 1 numRows=1 numRows=1是一个很特别的例外。
class Solution {
public:
string convert(string s, int numRows) {
string result;
int i=0;
int j=0;
int tem=numRows!=1?2*(numRows-1):1;
for(i=0;i<=tem/2;++i){
j=i;
while(j<s.size()){
result+=s[j];
if(j%tem!=0&&j%tem!=tem/2&&j+tem-2*i<s.size()){
result+=s[j+tem-2*i];
}
j+=tem;
}
}
return result;
}
};