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 参数不能超过机器字长,大数字用不了。 |