我正在尝试一个有竞争力的编程问题,我确信实现它的逻辑是正确的。我会请求其他StackOverflow用户帮助我解决相同的问题
问题如下:
布莱恩制造了他的汽车,并对他应该保留的名称感到困惑。 他向罗曼寻求帮助。罗曼是他的好朋友,建议了很多名字。布莱恩只喜欢名字:由三个不同的字符组成,例如C1,C2和C3
满足字符串形式的标准 - C1n C2n C3n:这意味着,首先C1发生n次,然后C2发生n次,然后C3发生n次。例如,xyz,ccaarr,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
答案 0 :(得分:1)
你的逻辑是正确的但是你的逻辑很复杂,即使这样它也会产生正确的输出。
这是一个简单的版本:
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")