
Traceback (most recent call last): File "/usercode/file.py", line 25, in <module> for i in range(N): TypeError: range() integer end argument expected, got str.
def TheLongest(s): s = '#' + '#'.join(s) + '#' length = len(s) Rl = [0]*length pos = 0 MaxRight = 0 MaxLen = 0 for i in range(length): if i < MaxRight: Rl[i] = min(Rl[2*pos - i], (MaxRight - i)) else: Rl[i] = 1 while i - Rl[i]>= 0 and i+Rl[i]<length and s[i - Rl[i]] == s[i+Rl[i]]: Rl[i]+=1 if Rl[i]+i-1 >MaxRight: pos = i MaxRight = Rl[i]+i-1 MaxLen = max(MaxLen,Rl[i]) return (MaxLen-1) N = raw_input() a_list = [] for i in range(N): s = raw_input() a_list.append(TheLongest(s)) for i in range(N): print a_list[i] 1 goodryb 2017-02-28 21:40:03 +08:00 TypeError: range() integer end argument expected, got str ;这不都说的很清楚了吗? |
2 DeTamble 2017-02-28 21:41:54 +08:00 加个 int 方法呗。 |
4 hsqzs1996 OP @goodryb 我在 input()那里加了,没用啊,这 2 版本的输入和 3 不一样啊…… |
5 goodryb 2017-02-28 23:45:58 +08:00 我这里没问题 |
6 hsqzs1996 OP @goodryb 真是醉了,你知道 hiho 这网站么,我的提交通不过,我在电脑上也没问题…… |
7 fy 2017-03-01 00:31:40 +08:00 讲道理 OJ 也应该支持 Python3 了…… 话说楼主醒醒,你的代码里还有 raw_input ,这能在 Python3.5 里执行? 就算是 2 也应当知道 raw_input 拿到的是字符串吧?我有点怀疑这代码的来路 |
8 hsqzs1996 OP @fy 这是我改过的, 2 和 3 大的区别我还是知道的。我原来写的是 3.5 版本的,提交的时候发现是要 2 版本的,然后我就改成这个样子了,然后它网站就通不过, input()拿到的确实是字符串啊,我加 int()了,在 3 里面是没有 raw_input()的,而且我的问题是我能在本地运行,却不能在在线网站上提交通过, goodryb 也在 2 上帮我运行了,也是没有问题,我没有学过 2 所以我才请教大家,这哪里有问题……算法已经懂了,不行我就用 c++实现算了 |
9 fy 2017-03-01 09:45:36 +08:00 via Android @hsqzs1996 只有 input 有问题。 2 里的 raw_input 等价于 3 的 input 。 其实这个代码从 3 到 2 是丝毫不用改的,因为 2 的 input ,就是一个只能读数字输出也是数字的东西。。。。 |
12 goodryb 2017-03-01 10:38:49 +08:00 @hsqzs1996 #6 从结果来看,并没有提示什么编译错误 Time Limit Exceeded TLE 用户程序运行时间超过题目的限制 |
13 yangtukun1412 2017-03-01 10:52:47 +08:00 @fy "因为 2 的 input ,就是一个只能读数字输出也是数字的东西" 可能你对 Python 2 中 input() 的理解是有偏差的... Python2 中 input() == eval(raw_input()) |
16 fy 2017-03-01 18:59:20 +08:00 @yangtukun1412 窝槽?还真是如此,学到了 >>> input() (lambda x: dir())(1) ['x'] 不过这个函数已经多年不用,以后也难有机会了…… @hsqzs1996 你把 range 改成 xrange 试试, 2 的 range 直接返回 list ,很慢。 这里一个 2 的坑就是 xrange 参数不能超过机器字长,大数字用不了。 |