ZigZag Conversion

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值