ZigZag Conversion

来源:互联网 发布:下载一个淘宝网 编辑:程序博客网 时间:2024/04/30 00:01

6 . ZigZag Conversion

原题地址:LeetCode ZigZag

The string “PAYPALISHIRING” is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)

图片实例

And then read line by line: [“PAHNAPLSIIGYIR”][6]
Write the code that will take a string and make this conversion given a number of rows:

string convert(string text, int nRows);

[convert(“PAYPALISHIRING”, 3)][6] should return [“PAHNAPLSIIGYIR”][6].


解题思路:

这里写图片描述

代码(Python):

class Solution(object):    def convert(self, s, numRows):        # 若只有一行,则直接返回原字符即可        if numRows == 1: return s        # lens为字符串长度        lens = len(s)        # 生成一个含有numRows个空字符串的list        res = ['' for i in range(numRows)]        # index用于指向当前字符应存入哪个字符串        index = -1        # step用于改变index的值        step = 1        # 循环字符串中的所有字符        for i in range(lens):            index += step            # 如果当前index超过了list的大小时,将index - 2, 同时step职位-1            if index == numRows:                index -= 2                step = -1                # 如果当前index小于了list的大小时,将index置为1, 同时step置为1            if index == -1:                step = 1                index = 1            # 将字符与list中的index指向的字符串链接            res[index] += s[i]        # 通过join连接符,将list中的字符串连接并返回一个字符串        return ''.join(res)
0 0
原创粉丝点击