力扣6. Z 字形变换
Posted 幽殇默
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了力扣6. Z 字形变换相关的知识,希望对你有一定的参考价值。
https://leetcode-cn.com/problems/zigzag-conversion/
找规律的题:本质和弹弹球一样的,到底又回来,到顶又下去。
class Solution {
public:
string convert(string s, int numRows) {
string ss[1005];
int cnt=0;
int k=0;
bool flag=true;
if(numRows==1) return s;//特殊情况
while(cnt<s.size())
{
ss[k]+=s[cnt];
cnt++;
if(flag) k++;
else k--;
if(k<0) flag=true,k=1;//到底
if(k==numRows)flag=false,k=numRows-2;//到顶
}
string ans;
for(int i=0;i<numRows;i++) ans+=ss[i];
return ans;
}
};
方法二:
class Solution {
public:
string convert(string s, int n) {
string ans;
if(n==1) return s;
for(int i=0;i<n;i++)
{
if(i==0||i==(n-1))
{
for(int j=i;j<s.size();j+=2*n-2) ans+=s[j];
}
else
{
for(int j=i,k=2*(n-1)-i;j<s.size()||k<s.size();j+=2*n-2,k+=2*n-2)
{
if(j<s.size()) ans+=s[j];
if(k<s.size()) ans+=s[k];
}
}
}
return ans;
}
};
以上是关于力扣6. Z 字形变换的主要内容,如果未能解决你的问题,请参考以下文章
6. Z 字形变换(leetcode力扣算法 - java / rust)