首页 > 其他 > 详细

Leetcode: ZigZag Conversion

时间:2014-06-13 08:32:15      阅读:308      评论:0      收藏:0      [点我收藏+]

一道数学题,参考了网上的思路,先计算一下每一个zig包含的字符个数,实际上是zigSize = nRows + nRows – 2
然后一行一行的加s中的特定元素就行。
第一行和最后一行都只需要加一个字符,每一个zig,而且在s中的index间隔是zigSize。
中间每一行需要添加两个字符到结果中去。第一个字符同上;第二个字符和前面添加这个字符在s上的inde相差正好是zigSize – 2*ir。ir是行index。

有一些细节需要注意:写循环结束条件时候要小心,如果这时候base已经超过了s.length(), 但是base - 2* i 还没有超过, i 是行数,这样就有可能漏掉 base - 2 * i 这种情况

bubuko.com,布布扣
 1 public class Solution {
 2     public String convert(String s, int nRows) {
 3         if (nRows == 1) return s;
 4         StringBuffer res = new StringBuffer();
 5         int zigsize = 2 * nRows - 2;
 6         int base = 0;
 7         for (int i = 0; i <= nRows - 1; i++) {
 8             for (base = i; ; base += zigsize) {
 9                 if (i == 0 || i == nRows - 1) {
10                     if (base >= s.length()) break;
11                     res.append(s.charAt(base));
12                 }
13                 else if (i > 0 && i < nRows - 1) {
14                     int t = base - 2 * i;
15                     if (t > 0 && t < s.length()) res.append(s.charAt(t));
16                     if (base >= s.length()) break;
17                     res.append(s.charAt(base));
18                 }
19             }
20         }
21         return res.toString();
22     }
23 }
bubuko.com,布布扣

 

Leetcode: ZigZag Conversion,布布扣,bubuko.com

Leetcode: ZigZag Conversion

原文:http://www.cnblogs.com/EdwardLiu/p/3781136.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!