张飞小拳拳 发表于 2021-2-25 23:43:45

回联文

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


请问 for i in range(length): 这一句为什么不是 length - 1 如果是(length-1)不刚好是限定下标,不使其越界么,if string != string: 而这一句条件为何是不等于呢,有大佬帮忙解答下么

Daniel_Zhang 发表于 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

张飞小拳拳 发表于 2021-2-25 23:57:39

Daniel_Zhang 发表于 2021-2-25 23:53
首先一个 是 回文联 不是 回联文

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


{:5_108:}抱歉哈,打错了,多谢
页: [1]
查看完整版本: 回联文