题目描述
AC代码
/*
字符串为 "LEETCODEISHIRING" 行数(n)为 4 时:
L D R
E O E I I
E C I H N
T S G
转换成对应的字符串下标的形式:
0 6 12
1 5 7 11 13
2 4 8 10 14
3 9 15
可以发现一个规律:
1.第一行:首项为0,公差为2(n-1)的等差数列
2.中间是2个不同的等差数列交错的形式
1 4 7 10 13
2 5 8 11 14
3.最后一行:首项是n-1,公差是2(n-1)的等差数列
*/
class Solution {
public String convert(String s, int n) {
if(n==1) return s;
String res="";
for(int i=0;i<n;i++){
//第一行和最后一行的情况
if(i==0||i==n-1)
{
for(int j=i;j<s.length();j+=2*(n-1)) res+=s.charAt(j);
}else{
//注意k的取值不要写成2*(n-1)-1!
for(int j=i,k=2*(n-1)-i;j<s.length()||k<s.length();j+=2*(n-1),k+=2*(n-1)){
if(j<s.length()) res+=s.charAt(j);
if(k<s.length()) res+=s.charAt(k);
}
}
}
return res;
}
}