leetcoder
🗒️6.N字形变换
00 min
2023-10-29
2024-7-1
type
status
date
slug
summary
tags
category
icon
password
😀
前言: 一个Zigzag字符串变换,自己做的时候只考虑到了下行变换,而且存在越界问题,交给GPT分析后优化出来的真牛逼啊,要是笔试能用chatgpt就好了。

题目描述

题解

分析

原始代码的一些问题
  1. 数组大小问题:C++不允许动态大小的数组。此代码中,char arr[numRows][len]; 这一行可能无法编译,因为 numRows 和 len 可能是运行时确定的。你应该使用 vector<vector<char>> 或者其他动态数据结构来代替。
  1. 数组初始化问题:在C++中,当你创建一个数组时,它不会自动初始化为0或空字符。在这个程序中,如果有些数组元素没有被赋值,它们可能会包含垃圾值,这可能会在后续的操作中导致问题。
  1. 索引错误:在第二个嵌套循环中,你试图访问arr[i][j],但是ij的范围是lennumRows,这可能会导致数组越界错误,因为数组的大小是numRowslen列。你应该将arr[i][j]更改为arr[j][i]
  1. ZigZag模式问题:这个代码只考虑了ZigZag模式的“下行”部分,没有考虑“上行”部分。这使得代码不能正确地实现ZigZag模式的转换。
  1. 性能问题:你的代码使用了两个嵌套循环来填充和读取数组,这可能导致性能问题。如果字符串很长,这将是一个问题。你可以尝试优化代码,以便在一次遍历中完成转换。
题解算法分析
  1. 创建了一个动态字符串向量vector<string> rows(min(numRows, int(s.size())))
  1. curRow 是当前行的指针,goingdown则代表着是下行还是上行。
  1. 在循环中,每一行会逐步的增加字符,丰富字符串,然后到最后,拼接结果就行
 
 
上一篇
LUCKY STUN内网穿透搭配CF实现域名自动重定向
下一篇
LCR 192. 不使用库函数的字符串转整数

Comments
Loading...