黑客等级字符串分隔挑战

2024-09-29 06:25:09 发布

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

我正在尝试解决一个黑客等级挑战: 给定长度为n、索引范围为0到n-1的字符串s,将其偶数索引字符和奇数索引字符打印为两个空格分隔的字符串。在一行上(有关更多详细信息,请参见下面的示例) 链接:https://www.hackerrank.com/challenges/30-review-loop/problem

错误: enter image description here

例如: 输入“adbecf”应输出“abc def”

当我运行python Visualizer时,我的代码似乎有正确的输出。。但在黑客级别上,我的答案是错误的。有人知道我的代码有什么问题吗

这是我试过的密码-

class OddEven:

   def __init__(self, input_statement):
       self.user_input = input_statement
   def user_list(self):
       main_list = list(user_input)
       
       even = []
       odd = []
       space = [" "]
       
       
       for i in range(len(main_list)):
           if (i%2) == 0:
               even.append(main_list[i])
           else:
               odd.append(main_list[i])
       full_string = even + space + odd
       return(full_string)
       
   def listToString(self):
       my_string = self.user_list()
       return(''.join(my_string))
       
       
       

if __name__ == "__main__":
   user_input = str(input ())
   p = OddEven(user_input)
   print(p.listToString())

Tags: 字符串代码selfinputstringmaindef错误
2条回答

首先,输入总是字符串,您不需要在这里转换它

user_input = str(input())

每一行都作为单独的输入提供给您。字符串数等于第一行中的num。在这种情况下2,所以

count = input()
for s in range(int(count)):
    ...

user_input函数内的^variable应作为self.user_input访问,它是对象的属性,可以作为self传递给函数

您还可以直接迭代列表

在这里:

full_string = even + space + odd

您试图连接列表,这不是一个好主意,您仍然会得到一个列表。 您可以使用joinstring方法通过使用一些字符串分隔它们来连接列表

' '.join(list1, list2, ..., listN)

最好将oddeven定义为空字符串。 然后使用连接(+)将它们连接起来

在这里:

if (i%2) == 0

您不必与0进行比较。Python将对条件右边的内容求值为True或False。因此:

if i % 2:
    ...

有一个更简单的解决方案:

def divide(self):
    odd = even = ''
    
    for i, c in enumerate(self.user_input):
        if i % 2:
            odd += c
        else:
            even += c
    return even + ' ' + odd

下面是解决此问题的简单代码:)

T=int(input())
for i in range(0,T):
    S=input()
    print(S[0::2],S[1::2])

相关问题 更多 >