Python 夏洛克的绳子

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)

问题描述:如果字符串的所有字符出现相同次数,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)
    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。第一步完成后,它将打印“是”,并立即中断。

哦,明白了,您也可以提出更改建议吗?