Leetcode 6.ZigZag Conversion

题目


ZigZag Conversion

题目大意:给定一个字符串和一个数字,将字符串排列成“S”形,数字代表“S”形型高度,最后返回将每一横排相加的字符串。
例如输入

PAYPALISHIRING 4

所以输出应该是

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++)//给字符串数组初始化
            str[i] = "";
        int r = 0;//控制字符串数组的每一行
        int flag = 1;//标记“S”形往上还是往下,即r是加还是减
        for(int i = 0;i < s.length();i++){
            str[r] = str[r] + s.charAt(i);
            //当到字符串数组的开始或者结束时反向,即flag取相反数
            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--;
        }
        //将字符串数组连接
        for(int i=0;i<str.length;i++)
            an = an+str[i];
        return an;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容