leetcode如何解决Z字形变换问题

发布时间:2022-01-17 11:50:13 作者:小新
来源:亿速云 阅读:130

小编给大家分享一下leetcode如何解决Z字形变换问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

 

题目链接

https://leetcode-cn.com/problems/zigzag-conversion/

 

题目描述

将一个给定字符串根据给定的行数,以从上往下、从左到右进行 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) {
       if(numRows == 1)
           return s;
       
       int len = Math.min(s.length(), numRows);
       String []rows = new String[len];
       for(int i = 0; i< len; i++) rows[i] = "";
       int loc = 0;
       boolean down = false;

       for(int i=0;i<s.length();i++) {
           rows[loc] += s.substring(i,i+1);
           if(loc == 0 || loc == numRows - 1)
               down = !down;
           loc += down ? 1 : -1;
       }
       
       String ans = "";
       for(String row : rows) {
           ans += row;
       }
       return ans;
   }
}
 
/**
* @param {string} s
* @param {number} numRows
* @return {string}
*/
var convert = function(s, numRows) {
   if(numRows == 1)
       return s;

   const len = Math.min(s.length, numRows);
   const rows = [];
   for(let i = 0; i< len; i++) rows[i] = "";
   let loc = 0;
   let down = false;

   for(const c of s) {
       rows[loc] += c;
       if(loc == 0 || loc == numRows - 1)
           down = !down;
       loc += down ? 1 : -1;
   }

   let ans = "";
   for(const row of rows) {
       ans += row;
   }
   return ans;
};
   

画解

leetcode如何解决Z字形变换问题

leetcode如何解决Z字形变换问题

leetcode如何解决Z字形变换问题

leetcode如何解决Z字形变换问题

leetcode如何解决Z字形变换问题

leetcode如何解决Z字形变换问题

leetcode如何解决Z字形变换问题

leetcode如何解决Z字形变换问题

leetcode如何解决Z字形变换问题

看完了这篇文章,相信你对“leetcode如何解决Z字形变换问题”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

推荐阅读:
  1. java实现Z字形扫描程序
  2. leetcode如何解决翻转图像问题

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

leetcode

上一篇:leetcode中如何解决爬楼梯问题

下一篇:怎么用python画个奥运五环

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》