• 【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();
        }
    }
  • 相关阅读:
    4 stackstorm定时器基础 Sky
    3 stackstorm rule Sky
    2 stackstrom action Sky
    1 StackStorm介绍 Sky
    stackstorm安装 Sky
    stackstorm webui安装 Sky
    3.8 Go之并发和并行
    3.2 Go之语言竞争状态
    3.2 Go之语言并发通信
    图床_typora设置.md
  • 原文地址:https://www.cnblogs.com/godlei/p/5568811.html
Copyright © 2020-2023  润新知