Python 夏洛克的绳子
问题描述:如果字符串的所有字符出现相同次数,Sherlock认为该字符串有效。如果他可以在字符串中的1个索引处仅删除1个字符,并且剩余的字符将出现相同的次数,则这也是有效的。给定一个字符串s,确定它是否有效。如果是,请返回是,否则返回否Python 夏洛克的绳子,python,python-3.x,string,list,Python,Python 3.x,String,List,问题描述:如果字符串的所有字符出现相同次数,Sherlock认为该字符串有效。如果他可以在字符串中的1个索引处仅删除1个字符,并且剩余的字符将出现相同的次数,则这也是有效的。给定一个字符串s,确定它是否有效。如果是,请返回是,否则返回否 def isValid(s): lst = [] temp = [] for i in s: y = i lst.append(y) st = set(lst) for j in st: count = s.count(j)
def isValid(s):
lst = []
temp = []
for i in s:
y = i
lst.append(y)
st = set(lst)
for j in st:
count = s.count(j)
temp.append(count)
temp.sort()
print(temp)
b=temp[-1]-temp[-2]
ele = temp[0]
chk=True
for item in temp:
if ele!=item:
chk=False;
break;
if(chk==True):
print('YES')
break;
elif(b==1):
print('YES')
break;
else:
print('NO')
break;
出于某种原因,不管我怎么说,答案似乎是肯定的。谁能告诉我哪里出了问题
PS-您不需要帐户来查看问题,只需单击屏幕上的任意位置。这是因为您为变量设置了初始值。在通过temp进行迭代的第一步中,您会发现ele==item,因为两者都是temp[0],然后会发现chk==True,因为您将其设置为True。第一步完成后,它将打印“是”,并立即中断。哦,明白了,您也可以提出更改建议吗?