題目

ZigZag Conversion
題目大意:給定一個字符串和一個數(shù)字,將字符串排列成“S”形,數(shù)字代表“S”形型高度,最后返回將每一橫排相加的字符串。
例如輸入
PAYPALISHIRING 4

所以輸出應(yīng)該是
PINALSIGYAHRPI
代碼如下
public class Solution {
public String convert(String s, int numRows) {
if(numRows == 1)
return s;
String an = "";//儲存最后返回的字符串
String[] str = new String[numRows];//儲存“S”形的每一行
for(int i=0;i<numRows;i++)//給字符串?dāng)?shù)組初始化
str[i] = "";
int r = 0;//控制字符串?dāng)?shù)組的每一行
int flag = 1;//標(biāo)記“S”形往上還是往下,即r是加還是減
for(int i = 0;i < s.length();i++){
str[r] = str[r] + s.charAt(i);
//當(dāng)?shù)阶址當(dāng)?shù)組的開始或者結(jié)束時反向,即flag取相反數(shù)
if(i != 0 && r == numRows-1 && flag == 1)
flag = 0;
else if(i != 0 && r == 0 && flag == 0)
flag = 1;
if(flag == 1)
r++;
if(flag == 0)
r--;
}
//將字符串?dāng)?shù)組連接
for(int i=0;i<str.length;i++)
an = an+str[i];
return an;
}
}