hacker rank编译器在修改字符串长度函数输入时显示错误

2024-06-17 06:55:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码在hacker rank编译器窗口中为某个问题的15个测试输入中的11个生成了满意的结果。但是,当我在代码中进行细微的更改时,所有测试输入都正常运行。你知道吗

这是我以前代码的一个片段,它显示了错误(由于超时而终止)。你知道吗

for ind, letter in enumerate(string):
    if letter in vowels:
        kevin += len(string[ind:])
    else:
        stuart += len(string[ind:])

当我把上面的代码改成下面的代码时,所有的输入都成功运行了。你知道吗

for ind, letter in enumerate(string):
    if letter in vowels:
        kevin += len(string) - ind
    else:
        stuart += len(string) - ind

这两个代码不相等吗?你知道吗


Tags: 代码inforstringlenifhackerelse
1条回答
网友
1楼 · 发布于 2024-06-17 06:55:19

除了两件事之外,这些代码片段是完全等效的:

  1. 第二个更优化-没有多个子集创建string。你知道吗
  2. 第二种方法适用于任何collection——可以处理dict、list、tuple、string和任何同时实现__len____iter__的方法。你知道吗

当您添加了错误,说它是超时错误时,我倾向于问题1,即字符串创建。你知道吗

如果要创建一个很长字符串的子集,请对每个迭代执行以下操作:

  1. 分配n-1字节的空间。(懒散
  2. 将所有空间设置为零(在内部完成,可能使用calloc()
  3. 将n-1字节从原始字符串复制到新空间。(
  4. 找出长度(非常快的操作
  5. 释放空间。(也很快

对于长字符串,整个序列可能是一个繁重的操作,尤其是在每次迭代中。你知道吗

第二种算法是这样的:

  1. 获取长度(快速操作
  2. 减法整数(快速运算
  3. ???你知道吗
  4. 利润。你知道吗

相关问题 更多 >