[ LeetCode ]- ZigZag Conversion 解答

本文介绍了一种将字符串以Z形方式分布并按行读取的算法实现。通过实例展示了不同行数下字符串的分布规律,并给出了Python代码实现。

原题目:

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)

P   A   H   N
A P L S I I G
Y   I   R
And then read line by line: "PAHNAPLSIIGYIR"

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) should return "PAHNAPLSIIGYIR".

题目的意思是说将字符 一个个 按照 纵向 从上到下再从下到上,如此反复排列。然后让我们按行来拼接它们。

Demo1 (3行)
1   5
2 4 6
3   7

Demo2 (4行)
1   7
2 6 8
3 5 9
4   10

Demo3 (5行)
1   9
2 8 10
3 7 11
4 6 12
5   13 

我们看完上面3个例子,不难发现 奇数列的间隔分别是:4 , 6 , 8。而我们三个Demo的行数是:3,4,5. 那么不然得出。 奇数列间隔 = 2*行数 - 2;

那么看偶数列间隔,偶数列有个特点是不包含在 首行和末尾行的,所以在推算的时候要排除掉。

拿Demo3 为例: 第二列比第一列的差依次为:6,4,2. 

那么不难看出:偶数列间隔 =  奇数列间隔 - 行数*2

OK,那么代码就好写了: 

class Solution(object):
    def convert(self, s, numRows):
       
        if len(s)>0 and numRows >1:
            row = 0
            offset = 2*numRows -2            
            result = ''
            while row < numRows:
                col = row
                while col < len(s):
                    result += s[col]
                    
                    if row!=0 and row != numRows-1:
                        index =col + offset - 2* row
                        if index < len(s):
                            result += s[index]
                    
                    col += offset
                row +=1
            return result
        else:
            return s




内容概要:本文档是一份关于交换路由配置的学习笔记,系统地介绍了网络设备的远程管理、交换机与路由器的核心配置技术。内容涵盖Telnet、SSH、Console三种远程控制方式的配置方法;详细讲解了VLAN划分原理及Access、Trunk、Hybrid端口的工作机制,以及端口镜像、端口汇聚、端口隔离等交换技术;深入解析了STP、MSTP、RSTP生成树协议的作用与配置步骤;在路由部分,涵盖了IP地址配置、DHCP服务部署(接口池与全局池)、NAT转换(静态与动态)、静态路由、RIP与OSPF动态路由协议的配置,并介绍了策略路由和ACL访问控制列表的应用;最后简要说明了华为防火墙的安全区域划分与基本安全策略配置。; 适合人群:具备一定网络基础知识,从事网络工程、运维或相关技术岗位1-3年的技术人员,以及准备参加HCIA/CCNA等认证考试的学习者。; 使用场景及目标:①掌握企业网络中常见的交换与路由配置技能,提升实际操作能力;②理解VLAN、STP、OSPF、NAT、ACL等核心技术原理并能独立完成中小型网络搭建与调试;③通过命令示例熟悉华为设备CLI配置逻辑,为项目实施和故障排查提供参考。; 阅读建议:此笔记以实用配置为主,建议结合模拟器(如eNSP或Packet Tracer)动手实践每一条命令,对照拓扑理解数据流向,重点关注VLAN间通信、路由选择机制、安全策略控制等关键环节,并注意不同设备型号间的命令差异。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值