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

在做题中学习(65):Z字形变换

6. Z 字形变换 - 力扣(LeetCode)

解法:模拟

思路:把原字符串从上到下依次读取到新字符串中,就需要看看Z字形变换时字符变化的规律。

以行数h=4时为例:

对于第一行和最后一行:

        每一个字符的下标距离为:2*h - 2

对于中间行:

        因为从第一行和最后一行可知,每一个A字符与下一个字符B都有公差的关系,所以只要把这个距离中间的字符X找出来,只要让A和X同时走公差步,就能遍历完一行。

以第二号行为例:A 和 L  要同时走公差步,首先要找到L:d-所在行第一个元素下标

细节

针对示例三,是有一行——>相当于原字符串没变换,直接返回即可。

class Solution 
{
public:string convert(string s, int numRows) {if(numRows == 1)return s;string ret;int d = 2*numRows - 2;//1.第一行for(int i = 0;i<s.size();i += d)ret += s[i];//2.中间行for(int i = 1;i<numRows-1;i++){for(int k = i,j = d-i;k<s.size() || j<s.size();k += d,j += d){if(k < s.size())ret += s[k];if(j < s.size())ret += s[j];}}//3.最后一行for(int i = numRows - 1;i<s.size();i += d) ret += s[i];return ret;}
};


http://www.mrgr.cn/news/56470.html

相关文章:

  • Vue-插槽slot
  • 每日OJ题_牛客_字符串分类_哈希+排序_C++_Java
  • 神经网络模型内部
  • 数字化变革:不在技术,而在组织
  • 树莓派应用场景
  • linux更改系统时间
  • spring源码拓展点3之addBeanPostProcesser
  • 2024年9月 GESP CCF C++五级编程能力等级考试认证真题
  • 【四】企业级JavaScript开发开发者控制台
  • Q宠大乐斗鹅号提取器(基于python实现)
  • 动态规划之路径问题
  • 基于MATLAB(DCT DWT)
  • 在做题中学习(66):两数相加
  • 每日OJ题_牛客_字符串分类_哈希+排序_C++_Java
  • 算法Day-7
  • Log4j和SLF4J在Java中打印日志的区别
  • 大厂面试真题-Redis的Cluster模式的smart clent了解吗,怎么初始化的
  • 上传文件到云存储前端报错413 Request Entity Too Large
  • 智能工厂的软件设计 结构映射、类比推理及信念修正
  • AcWing 11 背包问题求方案数
  • MybatisPlus入门(一)MybatisPlus简介
  • 字节流写入文件
  • 理解CPU怎么执行一条指令
  • 【flask web】 Blueprint 蓝图 路由模块化
  • 2、图像的特征
  • 技术经济学·技术经济分析指标体系与基本原则