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

[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();}

在这里插入图片描述

相关文章:

  • Python可视化设计原则
  • 【工作流】Fastgpt配置豆包模型-火山引擎
  • 青少年编程与数学 02-019 Rust 编程基础 23课题、web服务器
  • React19 项目开发中antd组件库版本兼容问题解决方案。
  • React 如何封装一个可复用的 Ant Design 组件
  • Flask vs. Django:如何选择最适合你的 Web 框架?
  • 框架开发与原生开发的权衡:React案例分析(原生JavaScript)
  • JVM部分内容
  • MacBookPro上macOS安装第三方应用报错解决方案:遇到:“无法打开“XXX”,因为无法确定(验证)开发者身份?怎么解决
  • uniapp实现的简约美观的票据、车票、飞机票模板
  • EtpBot:安卓自动化脚本开发神器
  • 云原生微服务的前世今生
  • Oracle 数据文件被删除后使用rman备份恢复过程
  • VUE 文件下载,流形式的文件下载,判断返回的是流还是JSON;获取下载名称
  • 学习笔记:黑马程序员JavaWeb开发教程(2025.4.10)
  • React中常用的钩子函数:
  • go语言基础
  • 交叉编译DirectFB报错解决方法
  • 【VLNs篇】04:SayNav-为新环境中的动态规划到导航进行大型语言模型的基础构建
  • 抛弃传统P2P技术,EasyRTC音视频基于WebRTC打造教育/会议/远程巡检等场景实时通信解决方案
  • php做网站完整视频/网站推广优化的方法
  • 黄页网站系统/企点
  • 广西住建局官方网站/郑州学校网站建设
  • 开发小程序定制公司/衡阳有实力seo优化
  • 青岛专业公司网站设计公司/网站设计与制作
  • 网站建设后端/深圳抖音推广公司