Как говорится в названии, мне нужна помощь, уменьшающая время выполнения кода, который я написал в качестве онлайн-судьи, который я компилирую, дает мне превышение лимита времени, даже несмотря на то, что код кажется, работает и дает правильный ответ, когда я его компилирую.Нужна помощь в сокращении времени выполнения кода на Python
Вопрос:
Сравните список строки и найти число различных последовательностей, где две строки считаются «идентичными» (не отличаются), если они точно так же, или же, но наоборот. Строки содержат только буквы a-z, все строчные буквы и имеют не более 10 символов. Каждый установленный набор будет содержать не более 5000 строк.
Например, строка «abc» идентична «cba», а также «abc». Строка «cba» идентична строке «abc», а также «cba». Список ["abc", "cba," "bac"] имеет две различные строки.
Напишите ответ функции (x), который берет список строк, x, и возвращает количество различных строк, используя это определение одинакового.
Мой код:
def answer(x):
b=0
ph=[]
rand=0
for y in x:
comp=list(y)
ph.append(comp)
while b<len(ph)-1:
j=b+1
while j<len(ph):
if(len(ph[b])==len(ph[j])):
i=0
while(i<len(ph[b])):
if ph[b][i]==ph[j][i]:
rand+=1
elif ph[b][i]==ph[j][len(ph[b])-1-i]:
rand+=1
i+=1
if rand==len(ph[b]):
ph.pop(j)
rand=0
j+=1
b+=1
return len(ph)
Этот вопрос может быть более подходящим для StackOverflow чем Просмотр Кода, вы можете получить лучшую помощь там –
Ваш код не на самом деле работает. Ну, технически, он переходит в бесконечный цикл. – jgritty