当前位置: 首页 > article >正文

leetcode 面试150之 Z 字形变换

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

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

P   A   H   N
A P L S I I G
Y   I   R

这里我们可以准备numRows个string对象来接受s中的字符

可以看到上述例子的插入规律是

3行:0 1 2 1 

4行:0 1 2 3 2 1 

5行:0 1 2 3 4 3 2 1

 这里我们可以准备一个数组然后按照规律数组去插入相应的stirng对象

完整代码:

class Solution {
public:
    string convert(string s, int numRows) {
        string val="";
        vector<int> index;
        vector<string> dp(numRows,"");
        int len=s.length();
        
        /*获取规律数组*/
        for(int i=0;i<numRows;i++)  index.push_back(i);
        int temp=numRows-2;
        while(temp>=1)  {index.push_back(temp);temp--;}
        
        /*遍历s  插入其归属string*/
        for(int i=0;i<len;i++)                          
        {
           dp[index[i%index.size()]]+=s[i];              
        }   
        
        for(auto ie:dp)
        {
           val+=ie;
        }  
        return val;
    }
};


http://www.kler.cn/a/400140.html

相关文章:

  • Docker: ubuntu系统下Docker的安装
  • 3步实现贪吃蛇
  • 【MQTT.fx 客户端接入 阿里云平台信息配置】
  • 《Python 网络爬虫》
  • C++网络编程之SSL/TLS加密通信
  • 场景营销在企业定制开发 AI 智能名片 S2B2C 商城小程序中的应用与价值
  • Solana应用开发常见技术栈
  • 高效服务器管理新选择:CasaOS轻NAS系统部署1Panel面板并实现远程访问
  • 如何用Excel批量提取文件夹内所有文件名?两种简单方法推荐
  • sql专场练习(二)(11-15)
  • Springboot之登录模块探索(含Token,验证码,网络安全等知识)
  • 微信小程序组件之swiper介绍
  • GeeRPC第一天 服务端与消息编码(1)
  • JAVA学习-练习试用Java实现“判断星期的英文缩写”
  • 汽车资讯新篇章:Spring Boot技术启航
  • 241118学习日志——[CSDIY] [ByteDance] 后端训练营 [06]
  • 除了电商平台,还有哪些网站适合进行数据爬取?
  • spring web项目中常用的注解
  • 语义通信论文略读(十四)线性编码和传输的优化+边缘服务器执行CV任务
  • C 语言 【单链表】
  • 探索DDCA:深入理解内存架构、子系统与内存控制器
  • Python设计模式详解之2 —— 工厂模式
  • 多模块集成swagger(knife4j-spring-boot-starter)
  • C++ ──── set和map的模拟实现
  • 探索IDE的无限可能:使用技巧与插件推荐
  • 【人工智能】生成对抗网络(GAN)原理与Python实现:从零构建图像生成模型