LeetCode 6.ZigZag Conversión 【Java】

Descripción del título

Conversión de zigzag

Código 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;
    }
}
201 artículos originales publicados · Me gusta9 · Visitantes más de 10,000

Supongo que te gusta

Origin blog.csdn.net/weixin_40992982/article/details/105516579
Recomendado
Clasificación