zoukankan      html  css  js  c++  java
  • 6. Z 字形变换

    将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。

    比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下:

    L C I R
    E T O E S I I G
    E D H N
    之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。

    请你实现这个将字符串进行指定行数变换的函数:

    string convert(string s, int numRows);
    示例 1:

    输入: s = "LEETCODEISHIRING", numRows = 3
    输出: "LCIRETOESIIGEDHN"
    示例 2:

    输入: s = "LEETCODEISHIRING", numRows = 4
    输出: "LDREOEIIECIHNTSG"
    解释:

    L D R
    E O E I I
    E C I H N
    T S G

    class Solution {
        public String convert(String s, int numRows) {
            // 第一行间隔:(n-1)*2
            // 第三行间隔:(n-1)*2
            // 每一行都是
            if (numRows == 1)
            {
                return s;
            }
            int step = numRows * 2 - 2;
            String ans = "";
            // 第0行
            for (int i = 0; i < s.length(); i += step)
            {
                ans += s.charAt(i);
            }
            // 中间行
            for (int i = 1; i < numRows - 1; i++)
            {
                for (int j = i; j < s.length(); )
                {
                    ans += s.charAt(j);
                    j = j + (numRows - i - 1) * 2;  // 这些肯定是的
    
                    // 但是少了一些
                    if (j < s.length())
                    {
                        ans += s.charAt(j);
                        j += 2*i;
                    }
                }
            }
            // last
            for(int i = numRows - 1;i<s.length();i+=step)
            {
                ans += s.charAt(i);
            }
            return ans;
        }
    }
  • 相关阅读:
    Sass代码重用----Sass继承
    Sass代码重用
    Scss基本运算-------颜色运算
    Scss基本运算-------字符运算
    Scss基本运算-------数字运算
    7.Scss的基本运算
    6.Scss注释
    css横竖屏判断
    禁止页面缩放及meta便签常用属性
    微信小程序 错误记录
  • 原文地址:https://www.cnblogs.com/ziytong/p/13129303.html
Copyright © 2011-2022 走看看