栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

算法学习:LeetCode-6. Z 字形变换

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

算法学习:LeetCode-6. Z 字形变换

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);

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/zigzag-conversion

2.解题思路

1.用二维数组去把字符串S按照“Z”字型排列后,再用一个新的字符串将二维数组中的内容串成一串儿。

2.如何把S按照“Z”字型排列?

        2.1先确定二维矩阵的shape:

                                        行数就是形参r;

                                        列数:“Z”的排列有一定的周期性,周期为

                                                     一个周期占有的列数为1+r-2=r-1

                                                     所以,字符串的占有的列数为t*(r-1)

        2.2 排列

                           设当前填写的位置为 (x,y),初始 (x,y)=(0,0)若当前字符下标 i,i 满足,则向下移动,否则向右上移动。

3.代码
class Solution {
public:
    string convert(string s, int numRows) {
        int n=s.length();
        if(numRows==1 || n chars(numRows, string(c, 0));
        int x=0,y=0;
        
        
        for(int i=0;i 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/993363.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号