我正在尝试一个有竞争性的编程问题,并且我确信实现此问题所使用的逻辑是正确的。我会要求其他StackOverflow用户的帮助来帮助我
问题如下:
布赖恩(Brian)造了车,对自己应该为它取什么名字感到困惑。他向罗曼求助。罗曼(Roman)是他的好朋友,提出了很多名字。Brian只喜欢以下名字:
完全由三个不同的字符组成,例如C1,C2和C3
满足字符串格式为-C1n C2n C3n的条件:这意味着,首先C1出现n次,然后C2出现n次,然后C3出现n次。例如,xyz,cacaarr,mmmiiiaaa满足条件,但xyzw,aabbbcccc不满足条件。
给定Roman所建议的N个名称,如果Brian不喜欢该名称,则打印“ OK”,如果不喜欢,则打印“ Not OK”。
因此,此的Python代码如下:
no_of_cases=int(input())
for value in range(no_of_cases):
dictionary={}
car_name=input()
for value in car_name:
dictionary[value]=dictionary.get(value,0)+1
if len(dictionary)==3:
count_list=list(dictionary.values())
name_list=list(dictionary.keys())
if ((count_list[0]==count_list[1]==count_list[2])):
c1=name_list[0]*count_list[0]+name_list[1]*count_list[0]+name_list[2]*count_list[0]
c6=name_list[0]*count_list[0]+name_list[2]*count_list[0]+name_list[1]*count_list[0]
c2=name_list[1]*count_list[0]+name_list[2]*count_list[0]+name_list[0]*count_list[0]
c5=name_list[1]*count_list[0]+name_list[0]*count_list[0]+name_list[2]*count_list[0]
c3=name_list[2]*count_list[0]+name_list[0]*count_list[0]+name_list[1]*count_list[0]
c4=name_list[2]*count_list[0]+name_list[1]*count_list[0]+name_list[2]*count_list[0]
if car_name==c1 or car_name==c2 or car_name==c3 or car_name== c4 or car_name==c5 or car_name==c6:
print("OK")
else:
print("Not OK")
else:
print("Not OK")
else:
print("Not OK")
样本输入/输出
bbbrrriii-OK
brian-NOT OK
您的逻辑是正确的,但是您使逻辑变得复杂,即使那样也会产生正确的输出。
这是一个简单的版本:
no_of_cases=int(input())
for value in range(no_of_cases):
car_name=input()
name_length = len(car_name)
correct = True if name_length%3==0 else False
if correct:
each_length = name_length//3
first,mid,last=car_name[0],car_name[each_length],car_name[-1]
if (first!=last) and (first!=mid) and (last!=mid):
if car_name!=(first*each_length+mid*each_length+last*each_length):
correct=False
else:
correct=False
if correct:
print("Ok")
else:
print("Not Ok")
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句