我正在尝试一个竞争性编程问题,我相信实现此问题的逻辑是正确的。我会请求其他Stackoverflow用户的帮助,以帮助我了解相同的
问题如下:
布莱恩(Brian)建造了他的汽车,并为他应该保留什么名字感到困惑。他向罗马寻求帮助。罗马是他的好朋友,提出了很多名字。布莱恩只喜欢:
-
由三个不同的字符组成,例如C1,C2和C3
-
满足了形式的字符串是-c1n c2n c3n的标准:这意味着首先发生c1,然后发生c2,然后发生n次,然后发生c3。例如,xyz,ccaarr,mmmiiiaaa满足了标准,但是xyzw,aabbbcccc却没有。
给定的n个名称由罗马建议,如果布莱恩(Brian)喜欢这个名字,则打印"确定",如果他不喜欢"。
所以为此的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")