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

网站安装教程大众点评网怎么做团购网站

网站安装教程,大众点评网怎么做团购网站,微信二级分销模式,安庆市建设银行网站1. 题目链接 LeetCode 6. Zigzag Conversion 2. 题目描述 将一个给定字符串 s 按照指定的行数 numRows 进行 Z 字形排列后,逐行读取并返回新的字符串。 示例: 输入:s "PAYPALISHIRING", numRows 3 → 输出:"P…
1. 题目链接

LeetCode 6. Zigzag Conversion


2. 题目描述

将一个给定字符串 s 按照指定的行数 numRows 进行 Z 字形排列后,逐行读取并返回新的字符串。
示例

  • 输入:s = "PAYPALISHIRING", numRows = 3 → 输出:"PAHNAPLSIIGYIR"
  • 输入:s = "A", numRows = 1 → 输出:"A"

3. 示例分析
  1. 标准 Z 字形排列
    • 输入 s = "PAYPALISHIRING", numRows = 3 的排列如下:
      P   A   H   N  
      A P L S I I G  
      Y   I   R  
      
    • 按行读取结果为 "PAHNAPLSIIGYIR"
  2. 单行排列
    • 输入 s = "ABCD", numRows = 1 → 输出 "ABCD"
  3. 两行排列
    • 输入 s = "ABCDE", numRows = 2 → 排列为 A C EB D,结果为 "ACEB D"(忽略空格)。

4. 算法思路

核心思想数学规律 + 直接构造

  1. 周期分析
    • Z 字形排列的每个周期长度为 d = 2 * numRows - 2。例如,numRows = 3 时,周期为 4。
  2. 行遍历规则
    • 首行和末行:每个周期仅包含一个字符,位置分别为 jj + numRows - 1
    • 中间行:每个周期包含两个字符,位置分别为 j + ij + d - ii 为当前行号)。
  3. 逐行构造
    • 遍历每一行,根据周期规律直接计算字符位置并拼接结果。

5. 边界条件与注意事项
  1. 单行处理
    • numRows = 1 时,直接返回原字符串。
  2. 空字符串处理
    • s 为空,返回空字符串。
  3. 字符位置越界
    • 在中间行遍历时,需确保计算的字符位置不超过字符串长度。
  4. 周期完整性
    • 每个周期的两个字符可能不全存在(如字符串长度不足),需分别判断。

6. 代码实现
class Solution {
public:string convert(string s, int numRows) {if (numRows == 1) return s; // 单行直接返回string ret;int n = s.size();int d = 2 * numRows - 2; // 周期长度for (int i = 0; i < numRows; i++) {if (i == 0) { // 首行for (int j = 0; j < n; j += d) {ret += s[j];}} else if (i == numRows - 1) { // 末行for (int j = i; j < n; j += d) {ret += s[j];}} else { // 中间行for (int j = i, k = d - i; j < n || k < n; j += d, k += d) {if (j < n) ret += s[j];if (k < n) ret += s[k];}}}return ret;}
};

在这里插入图片描述


关键代码解析

  1. 周期计算

    int d = 2 * numRows - 2;
    
    • 每个 Z 字形周期的字符数为 2 * numRows - 2
  2. 首行处理

    for (int j = 0; j < n; j += d) {ret += s[j];
    }
    
    • 首行字符位置为 0, d, 2d, ...
  3. 末行处理

    for (int j = i; j < n; j += d) {ret += s[j];
    }
    
    • 末行字符位置为 numRows - 1, numRows - 1 + d, ...
  4. 中间行处理

    for (int j = i, k = d - i; j < n || k < n; j += d, k += d) {if (j < n) ret += s[j];if (k < n) ret += s[k];
    }
    
    • 中间行的两个字符位置分别为 i, i + d, ...d - i, d - i + d, ...

总结

直接构造法通过数学规律确定 Z 字形排列中每行字符的位置,以线性时间复杂度和空间复杂度高效解决问题。其核心在于 周期分析与位置计算,避免了模拟排列的额外空间消耗。

适用场景

  • 字符串长度较大(n ≤ 1e3)。
  • 需要保证代码高效性和简洁性。

关键点

  • 理解 Z 字形排列的周期性规律。
  • 处理中间行时的双指针遍历逻辑。
http://www.dtcms.com/wzjs/575639.html

相关文章:

  • wordpress第一次进来要几秒钟网站描述怎么写利于seo
  • 常州网站建设要多少钱我爱搜罗 wordpress
  • 网站优化怎样做外链建设公司企业使命
  • 添加书签网站代码wordpress如何关闭主题
  • 网站建设邮公司展厅设计策划
  • 连云港网站关键字优化市场wordpress 主题 博客
  • 太原网站网络推广网站认证
  • 江西响应式网站制作个人可以做哪些有意思的网站
  • 网站的栏目管理html代码大全初学者必备
  • 黔东南企业网站建设商标注册查询流程
  • 企业品牌网站建设定制开发个人网站做企业备案
  • 有永久免费的域名吗知乎做搜狗pc网站优化
  • 使用vue做的网站有哪些宽屏网站模板
  • 网站优化具体做哪些事情免费的erp管理系统
  • 网站在百度上搜索不到wordpress 获取分类目录
  • 自己制作网站的步骤手机网站建设注意事项
  • 网站空间域名注册邢台抖音优化
  • 福建省住房城乡和建设厅网站宜昌seo
  • 打鱼网站建设谷歌搜索官网
  • 国家信用信息公示系统河北推广网站优化seo教程上排名
  • 排版 网站宿迁房产网租房
  • 荆州做网站公司张雪峰对市场营销专业的建议
  • 南京高端网站制作一元注册公司流程
  • 商城网站建设方案电子版网站建设哪家
  • 网站模板兼容手机端系统开发过程中的第一个正式文档是
  • 任丘建设网站建立网站需要什么软件
  • 人社部门网站建设英迈思做网站怎么样
  • 织梦网站手机版怎么做机械加工网站有哪些
  • 旅游网站建设的目的与意义是什么意思企业展厅设计图片
  • 宠物网站建设费用在线做投资网站