题目链接:
题目描述
将字符串,循环对角化,在输出。
比如:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20循环对角化成之字型。
0 8 16
1 7 9 15 17
2 6 10 14 18
3 5 11 13 19
4 12 20
)
分析:
开始真的没读懂题目什么意思,zizag?
感谢
不知道到在哪看的说用中间数组会超时………哪有嘛。
用一个二维数组,用一个j控制对应行,把字符串中循环对角化后的字符,放入中间数组对应行下。从j=0到j=numsRow-1再到j=0循环,i控制字符串下标,一直向前走。
代码:
class Solution {
public:
string convert(string s, int numRows) {
int len=s.size();
if(len<=1 || numRows<=1){
return s;
}
string tmp[numRows];
int i=0;
while(i<len){
for(int j=0;i<len && j<numRows;j++){
tmp[j]+=s[i++];
}
for(int j=numRows-2;i<len && j>0;j--){
tmp[j]+=s[i++];
}
}
string result="";
for(int j=0;j<numRows;j++){
result+=tmp[j];
}
return result;
}
};