zoukankan      html  css  js  c++  java
  • 6. ZigZag Conversion java solutions

    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".

    这题一上来就蒙,呵呵、、、每次做这种边界index 寻找的题目都很忧伤。。leetcode的 case 太多了。

     1 public class Solution {
     2     public String convert(String s, int numRows) {
     3         if(s == null || s.length() == 1 || numRows == 1) return s;
     4         StringBuilder ans = new StringBuilder();
     5         int size = 2*numRows - 2;
     6         for(int i = 0; i < numRows; i++){
     7             for(int j = i; j < s.length(); j += size){
     8                 ans.append(s.charAt(j));
     9                 if(i != 0 && i != (numRows - 1)){// 不在首行和尾行的情况
    10                     int tmp = j + size - 2*i;
    11                     if(tmp < s.length()) ans.append(s.charAt(tmp));// 加上中间的字符
    12                 }
    13             }
    14         }
    15         return ans.toString();
    16     }
    17 }
  • 相关阅读:
    C++ 日期 & 时间
    C++ 引用
    C++ 指针
    C++ 字符串
    C++ 数组
    C++ 数字
    C++ 函数
    C++ 判断
    C++ 循环
    C++ 运算符
  • 原文地址:https://www.cnblogs.com/guoguolan/p/5629157.html
Copyright © 2011-2022 走看看