zoukankan      html  css  js  c++  java
  • ZigZag Conversion

    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:

    string convert(string text, int nRows);
    convert("PAYPALISHIRING", 3) should return "PAHNAPLSIIGYIR".
    这道题A的略烦
    逻辑上,一行一行的遍历改写后的字符串,计算出每一行每一个字符在str中的位置
     1 public class Solution {
     2     public String convert(String s, int nRows) {
     3         int length_part = 2 * nRows - 2;//一个zigzag组成部分的长度
     4         int length_lastpart;//最后一个组成部分的长度
     5         int num_part;//组成部分的个数
     6         int length_s = s.length();//s长度
     7         int length_in_part = length_part;
     8         if(0 == s.length() || 1 == s.length() || 1 == nRows)
     9             return s;
    10         
    11         String result = "";
    12         num_part = length_s / length_part;
    13         length_lastpart = length_s % length_part;//求出组成部分个数和最后一部分的长度
    14         
    15         //int interval = 2 * nRows - 2;//最大间隔
    16         
    17         for(int i = 1; i <= nRows; i++){//遍历zigzag逻辑上的每一行的字符,这里只是计算出在s中的位置
    18             int index = i - 1;//每一行第一个字符的位置,输出每行的一个字符后后移
    19             for(int j = 1; j <= num_part; j++){//输出每一行的内容
    20                 result += s.charAt(index);                                 
    21                              
    22                 if(1 != i && nRows != i){  
    23                     //index += length_in_part;   
    24                     result += s.charAt(index + length_in_part);                    
    25                 }   
    26                 
    27                 index += length_part;
    28             }//for
    29             if(i <= length_lastpart){//最后一部分还有内容
    30                 result += s.charAt(index);
    31                 if(index + length_in_part < s.length() && length_in_part != 0)
    32                     result += s.charAt(index + length_in_part);
    33             }
    34             length_in_part -= 2;
    35         }
    36         
    37         return result; 
    38     }
    39 }
  • 相关阅读:
    剑指Offer(链表)-从尾到头打印链表
    Java数据结构与算法-链表
    剑指Offer(数组)-数组中重复的数字
    剑指Offer(数组)-二维数组的查找
    Java冒泡排序法实现
    springMVC全局异常配置
    CookieUtil工具类
    算法
    Java
    算法
  • 原文地址:https://www.cnblogs.com/luckygxf/p/4100837.html
Copyright © 2011-2022 走看看