博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode(6) - ZigZag Conversion
阅读量:4461 次
发布时间:2019-06-08

本文共 1731 字,大约阅读时间需要 5 分钟。

这个题的要求是给你一个字符串,和一个行数,例如(s = "mysisteristhemostlovelygirl" , row = 4),每一行一个字符串,但是s却得按照zigzag的方式重排序到这4行的字符串里,什么意思呢? 看例子大概就懂了:

      m    e     e      o      i

      y  t  r  h  m  l  v  g  r

      s  s  i  t  o   t  e  y  l

      i      s     s      l

  第一列开始往下走,走到第四行就往上走(第二列),走回第一行就重新往下走,如此类推,最后的输出就是每一行的叠加,也就是:

      "meeoiytrhmlvgrssitoteylissl"

  思路其实很简单,就是用一个index来表示走到哪一行,用一个flag来表示往下还是往上走,当index>4和index < 0的时候,改变flag就可以了。代码如下:

  

public class Solution {    public String convert(String s, int numRows) {        if (numRows == 1) return s;        String[] stringArray = new String[numRows];        //初始化字符串。        for (int i = 0; i < numRows; i++) {            stringArray[i] = "";        }        //index指向哪一行需要添加字母。        int index = 0;        //flag==1代表往下走(初始),flag==0代表往下走。        int flag = 1;        for (int i = 0; i < s.length(); i++) {            if (flag == 1) {                stringArray[index++] += s.charAt(i);                //当index越界时                if (index == numRows) {                    //-2是因为边界在index-1的时候已经写过一遍了                    index = index - 2;                    flag = 0;                }            }            else {                stringArray[index--] += s.charAt(i);                //与上面同理                if (index < 0) {                    index = index + 2;                    flag = 1;                }            }        }        StringBuilder sb = new StringBuilder(stringArray[0]);        //把每一行加起来,选择用StringBuilder而不用String是因为StringBuilder要快一些        //为什么?读者可以查阅相关资料就能够了解string往后面添加字符串是一个什么样的机制。        for (int i = 1; i < numRows; i++) {            sb.append(stringArray[i]);        }        return sb.toString();            }}

 

转载于:https://www.cnblogs.com/kepuCS/p/5224697.html

你可能感兴趣的文章
类的继承、菱形继承、派生、多态
查看>>
mysql约束
查看>>
javascript鼠标及键盘事件总结及案例
查看>>
mysql表之间的关系及级联操作
查看>>
mac 搭建virtualenv的那些坑
查看>>
多路复用IO模型
查看>>
2019秋招复习笔记--数据库基本操作
查看>>
2019秋招复习笔记--智力题
查看>>
MySQL学习笔记
查看>>
面试题
查看>>
DS博客作业08-课程总结
查看>>
利用Python爬虫刷店铺微博等访问量最简单有效教程
查看>>
浅谈软件测试与墨菲定律
查看>>
文件安全复制之 FastCopy
查看>>
强烈推荐美文之《从此刻起,我要》
查看>>
敏捷开发流程
查看>>
leetcode 412. Fizz Buzz
查看>>
对Netflix Ribbon的Loadbalancer类源码设计合理性的一点质疑
查看>>
关于日历的算法
查看>>
[QT编程]QT实现的一个渐隐渐显窗体
查看>>