首页 > 其他分享 >#yyds干货盘点# LeetCode面试题:N 字形变换

#yyds干货盘点# LeetCode面试题:N 字形变换

时间:2023-02-06 18:01:02浏览次数:64  
标签:yyds 面试题 ch 示例 int numRows char PAYPALISHIRING LeetCode

1.简述:

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

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

P   A   H   N

A P L S I I G

Y   I   R

之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"PAHNAPLSIIGYIR"。

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

string convert(string s, int numRows);

 

示例 1:

输入:s = "PAYPALISHIRING", numRows = 3

输出:"PAHNAPLSIIGYIR"

示例 2:

输入:s = "PAYPALISHIRING", numRows = 4

输出:"PINALSIGYAHRPI"

解释:

P     I    N

A   L S  I G

Y A   H R

P     I

示例 3:

输入:s = "A", numRows = 1

输出:"A"

2.代码实现:

class Solution {
public String convert(String s, int numRows) {
int n = s.length(), r = numRows;
if (r == 1 || r >= n) {
return s;
}
int t = r * 2 - 2;
int c = (n + t - 1) / t * (r - 1);
char[][] mat = new char[r][c];
for (int i = 0, x = 0, y = 0; i < n; ++i) {
mat[x][y] = s.charAt(i);
if (i % t < r - 1) {
++x; // 向下移动
} else {
--x;
++y; // 向右上移动
}
}
StringBuffer ans = new StringBuffer();
for (char[] row : mat) {
for (char ch : row) {
if (ch != 0) {
ans.append(ch);
}
}
}
return ans.toString();
}
}

标签:yyds,面试题,ch,示例,int,numRows,char,PAYPALISHIRING,LeetCode
From: https://blog.51cto.com/u_15488507/6040064

相关文章

  • String的面试题
    //去除首尾的空格privatestaticStringclaerTrim(Stringstr){Stringst="";intflag=0;intfirst=0,last=str.length();for(inti=0;i<s......
  • 代码随想录算法训练营第十八天|LeetCode 513.找树左下角的值、112. 路径总和 、113.路
    513.找树左下角的值文章:代码随想录(programmercarl.com)视频:怎么找二叉树的左下角?递归中又带回溯了,怎么办?|LeetCode:513.找二叉树左下角的值_哔哩哔哩_bilibili思路(......
  • [LeetCode] 2452. Words Within Two Edits of Dictionary
    Youaregiventwostringarrays, queries and dictionary.AllwordsineacharraycompriseoflowercaseEnglishlettersandhavethesamelength.Inone edi......
  • 【LeetCode】2331. 计算布尔二叉树的值
    classSolution{public:boolevaluateTree(TreeNode*root){returndfs(root);}booldfs(TreeNode*root){switch(root->val){......
  • #yyds干货盘点#
    1.软件开发分为:系统软件和应用软件。2.人机交互方式:分为图形画界面和命令行形式。常用的DOS命令:1.dir:列出当前的目录下的文件以及文件夹2:md:创建目录3.rd:删除目录4.cd......
  • #yyds干货盘点#
    1.软件开发分为:系统软件和应用软件。2.人机交互方式:分为图形画界面和命令行形式。常用的DOS命令:1.dir:列出当前的目录下的文件以及文件夹2:md:创建目录3.rd:删除目录4.cd......
  • 回文数(LeetCode)
    题目测试样例思路如果这道诶就当成一个数字来做的话,其实很简单;看题目要求,很容易知道;负数都不是回文数,0是回文数,;然后在对整数加以判断就好只需将整数逆序然后......
  • # yyds干货盘点 # 大佬们,我分完箱体了,我想统计每个箱体的accept_sum分别的和,可以怎么
    大家好,我是皮皮。一、前言前几天在Python白银交流群【对方正在输入中.....】问了一个​​Python​​可视化处理的问题,这里拿出来给大家分享下。下图是代码和报错截图:二、实......
  • 百度前端常见react面试题
    Dva工作原理集成redux+redux-saga工作原理改变发生通常是通过用户交互行为或者浏览器行为(如路由跳转等)触发的,当此类行为会改变数据的时候可以通过dispatch发起一个......
  • 一道React面试题把我整懵了
    提问:react项目中的JSX里,onChange={this.func.bind(this)}的写法,为什么要比非bind的func=()=>{}的写法效率高?声明:由于本人水平有限,有考虑不周之处,或者出现错误的,请......