zoukankan      html  css  js  c++  java
  • ZigZag Conversion

     1 public class Solution {
     2     public String convert(String s, int numRows) {
     3         // illegal parameters
     4         if(s == null || s.length() == 0 || numRows <= 0) {
     5             return s;
     6         }
     7         
     8         if(s.length() <= numRows || numRows == 1) {
     9             return s;
    10         }
    11         
    12         
    13         // get column numbers of array
    14         int numCols = 0;
    15         int len = s.length();
    16         while(len > 0) {
    17             len -= numRows * 2 - 2;
    18             numCols += numRows - 1;
    19         }
    20         
    21         StringBuilder res = new StringBuilder();
    22         Character[][] array = new Character[numRows][numCols];
    23         boolean isDown = true;
    24         int rowIndex = 0;
    25         int colIndex = 0;
    26         
    27         for(int i = 0; i < s.length(); i++) {
    28             Character c = s.charAt(i);
    29             array[rowIndex][colIndex] = c;
    30             if(isDown) {
    31                 // going down direction
    32                 rowIndex++;
    33                 if(rowIndex == numRows) {
    34                     // time to change to lean direction
    35                     isDown = false;
    36                     rowIndex -= 2;
    37                     colIndex++;
    38                 }
    39             } else {
    40                 // going lean direction
    41                 if(rowIndex == 0) {
    42                     // time to change to down direction
    43                     isDown = true;
    44                     rowIndex++; 
    45                 } else {
    46                     rowIndex--;
    47                     colIndex++;
    48                 }
    49             }
    50         }
    51         
    52         for(int i = 0; i < numRows; i++) {
    53             for(int j = 0; j < numCols; j++) {
    54                 Character c = array[i][j];
    55                 if(c == null) {
    56                     continue;
    57                 } else {
    58                     res.append(c);
    59                 }
    60             }
    61         }
    62         
    63         return res.toString();
    64     }
    65 }
  • 相关阅读:
    加密web.config
    SQL FOR XML
    SQL语句中拆分字段
    Units specified don't exist SHSUCDX can't install
    SQLSERVER与C#中数据类型的对应关系
    使用 FOR XML PATH 產生 XML 格式時,遇到 NULL 該如何處理?
    T_SQL的 FOR XML PATH 用法
    T-SQL with关键字
    Sqlserver获取行号
    win10以太网没有有效的ip配置
  • 原文地址:https://www.cnblogs.com/Phoenix-Fearless/p/5189805.html
Copyright © 2011-2022 走看看