6. ZigZag Conversion

来源:互联网 发布:linux 重启后存储丢失 编辑:程序博客网 时间:2024/06/05 23:34

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
原创粉丝点击