鱼C论坛

 找回密码
 立即注册
查看: 1933|回复: 2

[已解决]回联文

[复制链接]
发表于 2021-2-25 23:43:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
##回联文
def hlw(string):
   length = len(string)
   last = length - 1
   length //= 2
   flag = 1
   for i in range(length):
      if string[i] != string[last]:
         flag = 0
      last -= 1


请问 for i in range(length): 这一句为什么不是 length - 1 如果是(length-1)不刚好是限定下标,不使其越界么,  if string[i] != string[last]: 而这一句条件为何是不等于呢,有大佬帮忙解答下么
最佳答案
2021-2-25 23:53:50
首先一个 是 回文联 不是 回联文

回文联基本上是一个这样的构造

abcdedcba

为什么不是 length - 1,因为没有必要,range 是左闭右开的,你这里也就是 [0,length) 可以取到 0 但是取不到 length

所以用 length 不存在数组越界的问题

之所以不等于,是为了检查是不是回文联

正如我上面说的,回文联是 abcdedcba

比如来了一个 abcdegcba

那么你看,a = a b = b c = c 但是 d != g

因为 d != g 所以不是回文联,那么 flag = 0

flag 用来传值,看到底是不是回文联

初始化 flag 为 1,当发现两端的字符不相同,flag = 0
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-2-25 23:53:50 | 显示全部楼层    本楼为最佳答案   
首先一个 是 回文联 不是 回联文

回文联基本上是一个这样的构造

abcdedcba

为什么不是 length - 1,因为没有必要,range 是左闭右开的,你这里也就是 [0,length) 可以取到 0 但是取不到 length

所以用 length 不存在数组越界的问题

之所以不等于,是为了检查是不是回文联

正如我上面说的,回文联是 abcdedcba

比如来了一个 abcdegcba

那么你看,a = a b = b c = c 但是 d != g

因为 d != g 所以不是回文联,那么 flag = 0

flag 用来传值,看到底是不是回文联

初始化 flag 为 1,当发现两端的字符不相同,flag = 0
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-25 23:57:39 | 显示全部楼层
Daniel_Zhang 发表于 2021-2-25 23:53
首先一个 是 回文联 不是 回联文

回文联基本上是一个这样的构造

抱歉哈,打错了,多谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-28 17:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表