LeetCode ZigZag Conversion
1170 ワード
リンク:https://oj.leetcode.com/problems/zigzag-conversion/
文字列を次のように並べる
A
G
M
B
F
H
L
N
C
E
I
K
:
D
J
:
出力行順:AGMBFHLNCEIKDJ
あとは文字の座標で文字列の位置を計算します
文字列を次のように並べる
A
G
M
B
F
H
L
N
C
E
I
K
:
D
J
:
出力行順:AGMBFHLNCEIKDJ
あとは文字の座標で文字列の位置を計算します
class Solution
{
public:
string convert(string s,int nRows)
{
string ans;
if(s.empty())
return ans;
if(nRows==1)
return s;
int n=nRows*2-2;
int tem=s.length()%n;
int ncols=(s.length()/n)*2;
if(tem>=nRows)
ncols+=2; //
if(tem<nRows&&tem!=0)
ncols+=1;
if(s.length()<=nRows)
return s;
for(int i=0;i<nRows;i++)
{
for(int j=0;j<ncols;j++)
{
if((i==0||i==nRows-1)&&j%2==1) // ,
continue;
if(j%2==1)
{
tem=(j-1)/2*n+nRows-1+(nRows-2)-i+1;
if(tem>=s.length())
continue;
ans+=s[tem];
}
else
{
tem=j/2*n+i;
if(tem>=s.length())
continue;
ans+=s[tem];
}
}
}
return ans;
}
};