【算法day8】 Z 字形变换 -O(n)算法思路整理

Z 字形变换,算法思路整理

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

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

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

P A H N

A P L S I I G

Y I R

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

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

  • 不擅长打印图形,我将把所有矩阵和一维坐标的映射关系都学习一遍
cpp 复制代码
class Solution {
public:
    string convert(string s, int numRows) {
        int s_len = s.size();
        if (numRows >= s_len || numRows == 1)
            return s;
        int T_length = numRows + numRows - 2;
        string ans;
        for (int i = 0; i < numRows; i++) {
            for (int j = 0; i + j < s_len; j = j + T_length) {
                ans += s[i + j];
                // 不是首行和最后一行的时候,
                if (i > 0 && i < numRows - 1 && j + T_length - i < s_len) {
                    ans += s[j + T_length - i];
                }
            }
        }
        return ans;
    }
};
相关推荐
草莓火锅18 小时前
用c++求第n个质数
开发语言·c++·算法
snakecy18 小时前
自然语言处理(NLP)算法原理与实现--Part 1
人工智能·算法·自然语言处理
萌新彭彭18 小时前
vLLM主要模块Scheduler详解
算法·源码阅读
灵动小溪18 小时前
时频信号分析总结
算法
CoovallyAIHub19 小时前
让Qwen-VL的检测能力像YOLO一样强,VLM-FO1如何打通大模型的视觉任督二脉
深度学习·算法·计算机视觉
2401_8414956419 小时前
【自然语言处理】基于统计基的句子边界检测算法
人工智能·python·算法·机器学习·自然语言处理·统计学习·句子边界检测算法
CoovallyAIHub19 小时前
突破跨模态识别瓶颈!火箭军工程大学提出MFENet:让AI在白天黑夜都能准确识人
深度学习·算法·计算机视觉
CoovallyAIHub19 小时前
TypeScript超越Python,以66%增速跃升第一,Python稳居AI领域王座
深度学习·算法·计算机视觉
User_芊芊君子20 小时前
【LeetCode经典题解】递归破解对称二叉树之谜
算法·leetcode·职场和发展
Rock_yzh20 小时前
LeetCode算法刷题——49. 字母异位词分组
数据结构·c++·学习·算法·leetcode·职场和发展·哈希算法