LeetCode(五)字符串操作-#6

    科技2025-09-30  34

    6. Z 字形变换

    1.题目描述及示例

    题目描述

    示例

    2.题解思路及代码

    思路 我的思路不太好用语言描述,numRows代表z字形状有多少行,0, numRows-1行算一种情况,1 ~ numRows-2行算一种情况,两种情况分别处理。。。。。。。。。。。。算了,看别人的解析吧,他的思路要简洁一些 https://leetcode-cn.com/problems/zigzag-conversion/solution/zzi-xing-bian-huan-by-jyd/

    代码

    我的代码 public String convert(String s, int numRows) { if(numRows==1) return s; StringBuilder stringBuilder=new StringBuilder(); int seg=numRows*2-2; for (int i=0;i<numRows;i++) { int rowId=i; if (rowId==0||rowId==numRows-1) { while (rowId<s.length()) { stringBuilder.append(s.charAt(rowId)); rowId+=seg; } } else { while (rowId<s.length()) { stringBuilder.append(s.charAt(rowId)); if (rowId+seg-2*i<s.length()) { stringBuilder.append(s.charAt(rowId+seg-2*i)); } rowId+=seg; } } } return stringBuilder.toString();

    别人的代码 public String convert(String s, int numRows) { if(numRows < 2) return s; List<StringBuilder> rows = new ArrayList<StringBuilder>(); for(int i = 0; i < numRows; i++) rows.add(new StringBuilder()); int i = 0, flag = -1; for(char c : s.toCharArray()) { rows.get(i).append(c); if(i == 0 || i == numRows -1) flag = - flag; i += flag; } StringBuilder res = new StringBuilder(); for(StringBuilder row : rows) res.append(row); return res.toString(); }

    我的代码思路较复杂,但速度快一点

    Processed: 0.019, SQL: 8