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

[Java][Leetcode middle] 6. Z 字形变换

法一,自己想的

使用一个复合结构的 List<ArrayList<String>> 来存储每一行的字母,最后按序输出。
使用flag来判断到底放到哪一行上去。flag按照:0–1–2–1–0–1–2这样变化,实现躺着的Z字形。

    public String convert(String s, int numRows) {if (numRows == 1) {return s;}StringBuilder sb = new StringBuilder();// use three arrayListList<ArrayList<String>> xxx = new ArrayList<>();for (int i = 0; i < numRows; i++) {xxx.add(new ArrayList<>());}int flag = 0;int zj = 1; // 0-1-2-1-0int cnt = 0; // record the index of String swhile (cnt < s.length()) {char ch = s.charAt(cnt);ArrayList<String> strs = xxx.get(flag);strs.add(ch + "");xxx.set(flag, strs);if(flag == numRows - 1) {zj =  -1;}if(flag == 0){zj = 1;}flag += zj;cnt++;}for(int i = 0; i < numRows; i++) {ArrayList<String> strs = xxx.get(i);for (String str : strs) {sb.append(str);}}return sb.toString();}

很慢
在这里插入图片描述

方法二

采用StringBuilder[]代替上文的嵌套List,优化了一下开头

public String convert2(String s, int numRows) {int n = s.length(), r = numRows;if (r == 1 || r >= n) {return s;}StringBuilder[] sbs = new StringBuilder[n];for (int i = 0; i < numRows; i++) {sbs[i] = new StringBuilder();}int flag = 0;int zj = 1; // 0-1-2-1-0int cnt = 0; // record the index of String swhile (cnt < s.length()) {char ch = s.charAt(cnt);sbs[flag].append(ch + "");if(flag == numRows - 1) {zj =  -1;}if(flag == 0){zj = 1;}flag += zj;cnt++;}StringBuilder sb = new StringBuilder();for(int i = 0; i < numRows; i++) {sb.append(sbs[i]);}return sb.toString();}

在这里插入图片描述

http://www.xdnf.cn/news/8122.html

相关文章:

  • TCP与UDP协议全面对比:从原理到应用场景深度解析
  • ROS2 camera_calibration 双目相机标定指令
  • 监控易一体化运维:网络拓扑管理,网络管理高效之道
  • 异常数据的检测
  • 【基础】Windows开发设置入门11:hyper-v虚拟机创建
  • 批处理操作优化思路
  • 使用Pyinstaller打包python,全过程解析【2025最详细】
  • 湖北理元理律师事务所:专业债务优化如何助力负债者重获生活掌控权
  • CS和BS架构
  • 《数据结构笔记一》: 指针、结构体、动态内存分配、算法时间复杂度。
  • Python绘制3D图表
  • PostgreSQL 18 升级新体验:pg_upgrade --swap 极简教程
  • BGE-M3 文本情感分类实战:预训练模型微调,导出ONNX并测试
  • b/s开发 1.0
  • DDS与PLL技术
  • 力扣HOT100之二叉树: 437. 路径总和 III
  • 8天Python从入门到精通【itheima】-29~31
  • dify介绍(优势与作用)
  • 小样本百分比的统计检验
  • AbMole推荐Rapamycin: 自噬、肿瘤、免疫、衰老研究的关键工具
  • 干货分享:90+深度学习开源数据集
  • React 第四十五节 Router 中 useHref() Hook的使用详解及注意事项
  • session、cookie或者jwt 解释一下
  • 十五、Hive 窗口函数
  • java基础(方法)
  • Ubuntu18.04安装ros
  • -40℃到+125℃全温域稳定!车规级晶振如何突破温度极限
  • 27-FreeRTOS的任务管理
  • 华为模拟器练习简单的拓扑图(3台路由器和2台pc)
  • 如何成功开发海外APP:跨国市场的机遇与挑战