6. ZigZag Conversion

6. ZigZag Conversion

问题:将锯齿形排列的字符串恢复成正常便于阅读的顺序。

这里写图片描述

自己写的:(java)

public class Solution {
    public String convert(String s, int numRows) {
        if (s.length() <= 0) {
            return "";
        }
        if (numRows == 1) {
            return s;
        }
        //将字符串切分成数组,有效位从0开始。
        String[] strSplitArray = s.split("");
        StringBuffer strResult = new StringBuffer();
        for(int rowNumber = 0; rowNumber < numRows; rowNumber++) {
            if (rowNumber == 0 || rowNumber == numRows-1) {
                //第一行和最后一行:前一个位置+(numRows-2)+numRows
                for(int i=rowNumber; i<strSplitArray.length; i=i+numRows*2-2) {
                    strResult.append(strSplitArray[i]);
                }
            }
            else {
                for(int i=rowNumber,tag=1; i<strSplitArray.length;tag++) {
                    //对于中间行需要分为奇列和偶列两种情况
                    if (tag%2 != 0) {
                        //对于奇列,也就是前一个位置在第一、三、五..列:前一个位置+(numRows-所在行数)+(numRows-所在行数),这里的所在行数是从1开始的,因此所在行数等于rowNumber+1。
                        strResult.append(strSplitArray[i]);
                        i=i+2*numRows-2*rowNumber-2;
                    }
                    else {
                        //对于偶列,也就是前一个位置在第二、四、六..列:前一个位置+(所在行数-2)+所在行数,这里的所在行数是从1开始的,因此所在行数等于rowNumber+1。
                        strResult.append(strSplitArray[i]);
                        i=i+2*rowNumber;
                    }
                }
            }
        }
        String newStrResult = strResult.toString();
        return newStrResult;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值