博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
6. ZigZag Conversion
阅读量:6119 次
发布时间:2019-06-21

本文共 2145 字,大约阅读时间需要 7 分钟。

hot3.png

PAYPALISHIRING   P   A   H   NA P L S I I GY   I   R
import java.util.Arrays;/** * * * convert("PAYPALISHIRING", 3) should return "PAHNAPLSIIGYIR". * *   P   A   H   N   A P L S I I G   Y   I   R */public class ZigZagConversion {    public static void main(String[] args) {        ZigZagConversion zzc = new ZigZagConversion();        System.out.println(zzc.convert("PAYPALISHIRING",3));;    }    public String convert(String s, int nRows) {        int len = s.length();        if (len == 0 || nRows <= 1) return s;        String[] ans = new String[nRows];//使用n行的数组存储结果        Arrays.fill(ans, "");        int row = 0, delta = 1;        for (int i = 0; i < len; i++) {            ans[row] += s.charAt(i);//            System.out.println("row:"+row+",ans["+row+"]:"+ans[row]+",i:"+i);            row += delta;//            System.out.println("^^^"+row);            if (row >= nRows) {                row = nRows-2;  //最底层的上一层                delta = -1;     //到达最底层之后,逐级递升//                System.out.println("---"+row+","+i+"---");            }            if (row < 0) {                row = 1;        //第二层                delta = 1;      //逐级深入下一层//                System.out.println("***"+"1,"+i+"***");            }        }        String ret = "";        for (int i = 0; i < nRows; i++) {            ret += ans[i];        }        return ret;    }}//    /**//     * 发现所有行的重复周期都是 2 * nRows - 2//     * 对于首行和末行之间的行,还会额外重复一次,重复的这一次距离本周期起始字符的距离是 2 * nRows - 2 - 2 * i//     *///    public String convert(String s, int nRows) {//        int len = s.length();//        if (len == 0 || nRows < 2) return s;////        String ret = "";//        int lag = 2*nRows - 2; //循环周期//        for (int i = 0; i < nRows; i++) {//            for (int j = i; j < len; j += lag) {//                ret += s.charAt(j);//                //非首行和末行时还要加一个//                if (i > 0 && i < nRows-1) {//                    int t = j + lag - 2*i;//                    if (t < len) {//                        ret += s.charAt(t);//                    }//                }//            }//        }//        return ret;//    }

转载于:https://my.oschina.net/datacube/blog/702339

你可能感兴趣的文章
Linux--redhat linux图形界面切换到字符界面
查看>>
45. SQL- 安全性之策略管理
查看>>
提高效率的秘诀
查看>>
互联网创业和软件开发
查看>>
AT&T与Intel汇编语言的比较
查看>>
关于Inodes文件被占满(如何解决linux报No space left on device错误)
查看>>
Runtime.exec()的使用
查看>>
使用Centreon管理Nagios教程之Nagios和Centreon安装
查看>>
windows tomcat6起動失敗
查看>>
每天一个liunx 命令 nc
查看>>
Linux基础知识之echo命令详解
查看>>
CRT连接没颜色
查看>>
启动hadoop2.x historyserver
查看>>
专业的条形码读写控件VintaSoftBarcode.NET SDK
查看>>
我的友情链接
查看>>
C实现WEB服务器端的通信接收
查看>>
“在本地计算机无法启动Server服务,错误2:系统找不到指定的文件”问题
查看>>
SQL Server与Oracle、DB2三种数据库比较
查看>>
请为爱伸出援手
查看>>
smartbits的国产版本minismb-如何配置Ping报文
查看>>