Leetcode 6.ZigZag Conversion

作者: 沉默的叔叔 | 来源:发表于2016-11-11 11:29 被阅读17次

    题目


    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;
        }
    }
    

    相关文章

      网友评论

        本文标题:Leetcode 6.ZigZag Conversion

        本文链接:https://www.haomeiwen.com/subject/wfotpttx.html