程序分享--常见算法/编程面试题:Z 字形变换

关注我,持续分享逻辑思维&管理思维&面试题; 可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;

推荐专栏《10天学会使用asp.net编程AI大模型》,目前已完成所有内容,持续上传中。一顿烧烤不到的费用,让人能紧跟时代的浪潮。从普通网站,到公众号、小程序,再到AI大模型网站。干货满满。学成后可接项目赚外快,绝对划算。不仅学会如何编程,还将学会如何将AI技术应用到实际问题中,为您的职业生涯增添一笔宝贵的财富。

-------------------------------------正文----------------------------------------

将一个给定字符串 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"

提示:

  • 1 <= s.length <= 1000
  • s 由英文字母(小写和大写)、',' 和 '.' 组成
  • 1 <= numRows <= 1000

-------------------------------------答案----------------------------------------

class Solution {
public:
    string convert(string s, int numRows) {
        int len = s.size();
        if(numRows == 1 ||  len <= numRows) return s;

        string result;
        int t = 2*(numRows-1);
        for(int i = 0;i < numRows;i++) {
            int j = 0;
            int index = i;
            while(index < len) {
                result.push_back(s[index]);
                if(i == 0 || i == numRows-1) {
                    index += t;
                } else if(j%2 == 0) {
                    index += t-2*i;
                } else {
                    index += 2*i;
                }
                j++;
            }
        }
        return result;
    }
};

感兴趣的同学辛苦 关注/点赞 ,持续分享逻辑、算法、管理、技术、人工智能相关的文章。

有意找工作的同学,请参考博主的原创:《面试官心得--面试前应该如何准备》,《面试官心得--面试时如何进行自我介绍》, 《做好面试准备,迎接2024金三银四》。
或关注博主免费专栏【程序员宝典--常用代码分享】里面有大量面试涉及的算法或数据结构编程题。

博主其它经典原创:《管理心得--如何高效进行跨部门合作》,《技术心得--如何成为优秀的架构师》、《管理心得--如何成为优秀的架构师》、《管理心理--程序员如何选择职业赛道》,及
C#实例:SQL如何添加数据》,《C#实战分享--爬虫的基础原理及实现》欢迎大家阅读。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-15 20:20:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-15 20:20:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-15 20:20:02       82 阅读
  4. Python语言-面向对象

    2024-06-15 20:20:02       91 阅读

热门阅读

  1. mysql社区版有可以双机吗

    2024-06-15 20:20:02       24 阅读
  2. 开窗函数MYSQL

    2024-06-15 20:20:02       31 阅读
  3. 使用多进程和 Scrapy 实现高效的 Amazon 爬虫系统

    2024-06-15 20:20:02       29 阅读
  4. MyBatis-PageHelper 源码解说

    2024-06-15 20:20:02       32 阅读
  5. 二刷算法训练营Day32 | 贪心算法(2/6)

    2024-06-15 20:20:02       32 阅读
  6. Mysql--基础知识点--86--慢查询

    2024-06-15 20:20:02       41 阅读
  7. C语言猜输赢游戏

    2024-06-15 20:20:02       35 阅读
  8. C语言运算中的临时匿名变量

    2024-06-15 20:20:02       27 阅读