• 【Leetcode】6. ZigZag Conversion


    题目描述:

    The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)

    P   A   H   N
    A P L S I I G
    Y   I   R
    

    And then read line by line: "PAHNAPLSIIGYIR"

    Write the code that will take a string and make this conversion given a number of rows:

    解题思路:

         这道题中每行出现的字母的位置是有规律的,以从第1行到第numRows行,再到第2行为一次循环,除了从第1行与第numRows行有1个字母出现外,其余各行都有2个字母出现,而且这两个字母的位置与所在行数有关。各次循环之间的间隔是一样的,所以把握此规律逐行读入所在位置的字母即可。读入时要保证计算出的位置小于字符串的长度。

    具体代码:

    public class Solution {
        
       public static String convert(String s, int numRows) {
            //如果numrows为1或者字符串长度小于numRows,则直接返回字符串即可
            if(numRows==1)
                return s;
            if(s.length()<=numRows)
                return s;
            
            StringBuilder sb =new StringBuilder();//保存读入的字符
            int len = s.length();
            for(int i=0;i<numRows;i++){
                if(i==0){
                    int num=0;
                    while(num<len){
                        sb.append(s.charAt(num));
                        num=num+2*(numRows-1);
                    }
                }
                else if(i==numRows-1){
                    int num=i;
                    while(num<len){
                        sb.append(s.charAt(num));
                        num=num+2*(numRows-1);
                    }
                }
                else{
                    int num1=i;
                    int num2=i+2*(numRows-1-i);
                    while(num1<len){
                        sb.append(s.charAt(num1));
                        
                        if(num2<len)
                            sb.append(s.charAt(num2));
                        num1=num1+2*(numRows-1);
                        num2=num2+2*(numRows-1);
                    }
                }
            }
            return sb.toString();
        }
    }
  • 相关阅读:
    java去掉List中的重复值代码
    jquery 请求jsp传递json数据的方法
    jsp自定义标签分析
    jquery mouseout事件冒泡解决方法
    java split函数 对空的处理
    log4j使用感受
    mysql数据库主外键级联删除脚本RESTRICT --> CASCADE
    jquery 实现层级下拉框联动效果 代码
    JSP图片上传 公共工具类
    Apache和Nginx的对比
  • 原文地址:https://www.cnblogs.com/godlei/p/5568811.html
走看看 - 开发者的网上家园