鱼C论坛

 找回密码
 立即注册
查看: 1681|回复: 7

[已解决]019课后作业,回文联方法1算法求解。

[复制链接]
发表于 2020-6-2 13:53:55 | 显示全部楼层 |阅读模式

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

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

x
  1. #方法1
  2. def duilian(string):
  3.     length = len(string)
  4.     last = length - 1
  5.     length //= 2
  6.     flag = 1
  7.    
  8.     for each in range(length):
  9.         if string[each] != string[last]:
  10.             flag = 0
  11.         last -= 1

  12.     if flag == 1:
  13.         return 1
  14.     else:
  15.         return 0
  16.    
  17. string = input("请输入一句话:")
  18. if duilian(string) == 1:
  19.     print ("是回文联")
  20. else:
  21.     print ("不是回文联")

  22. #方法2

  23. def duilian(string):
  24.     list1 = list(string)
  25.     list2 = list(reversed(list1))
  26.     if list1 == list2:
  27.         return "是回文联”
  28.     else:
  29.         return "不是回文联"
复制代码


方法2看上去就很简单,自己也是这么想的,看了答案之后方法1里面last变量还有length //= 2还有string[last]不太理解是什么意思,求解答
最佳答案
2020-6-2 13:59:29
last变量还有length //= 2还有string[last]不太理解是什么意思

last 变量是指字符串最后一个元素的位置参数,可以当作成 -1

length // 2 的原因是 没错 string 判断都是判断第一个和最后一个字符串是否相等 ,每次这样判断都是拿两个字符串来判断,所以只需要判断 字符串长度一半的次数

string[last]  知道第一个为什么,应该能理解这个了吧,就是指最末尾的 元素 相当于 string[-1]
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-6-2 13:57:22 | 显示全部楼层
假设你有6个字符串需要判定,

是不是只要判定前三个跟后三个是否相符就可以了?

前三个就是lengh//2,切半的结果。

最后1个就是lengh的总长度 -1 。(字符串长度为6的话,下标只到5.)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-2 13:59:29 | 显示全部楼层    本楼为最佳答案   
last变量还有length //= 2还有string[last]不太理解是什么意思

last 变量是指字符串最后一个元素的位置参数,可以当作成 -1

length // 2 的原因是 没错 string 判断都是判断第一个和最后一个字符串是否相等 ,每次这样判断都是拿两个字符串来判断,所以只需要判断 字符串长度一半的次数

string[last]  知道第一个为什么,应该能理解这个了吧,就是指最末尾的 元素 相当于 string[-1]
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-2 14:14:59 | 显示全部楼层
Twilight6 发表于 2020-6-2 13:59
last 变量是指字符串最后一个元素的位置参数,可以当作成 -1

length // 2 的原因是 没错 string 判断 ...

哦哦  原来是这样,就相当于length初始索引是0 就是第一个呗,然后last -= 1的化,再索引last就相当于从后往前索引,所以要 - 1  是这个意思吧~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-2 14:15:43 | 显示全部楼层
Aber 发表于 2020-6-2 14:14
哦哦  原来是这样,就相当于length初始索引是0 就是第一个呗,然后last -= 1的化,再索引last就相当于从 ...

聪明
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-25 15:32:20 From FishC Mobile | 显示全部楼层
楼主问了一些我想问的问题,,太棒了  呜呜X﹏X
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-25 16:32:48 From FishC Mobile | 显示全部楼层
heidern0612 发表于 2020-6-2 13:57
假设你有6个字符串需要判定,

是不是只要判定前三个跟后三个是否相符就可以了?

假设是7个字符串,
只判断前一半和后一半,
中间一个公有的就忽略。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-25 16:41:48 | 显示全部楼层
wanのcc 发表于 2021-3-25 16:32
假设是7个字符串,
只判断前一半和后一半,
中间一个公有的就忽略。

有什么疑问吗?

忽略了不就忽略了

1234321

中间那个 4 忽略了,并不妨碍去判断是否是回文联

1234321 倒过来不还是 1234321 ?

中间那个压根就不需要去判断,因为是共有的,不论正着还是反着,中间那个都不会变的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-26 07:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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