我想看看給定的骰子是否可以彌補給定的字符串。以這種特殊情況爲例,如果我們給出'IAM'
和可以給予骰子給定的字符串?
given_set= [['I', 'B', 'A'], ['J', 'I', 'P',], ['M', 'R', 'S'], ['T', 'U', 'V']]
我的代碼返回False。但是如果我們從第二個列表中獲取'I'
並從第一個列表中獲取'A'
,我們仍然可以創建字符串。我想我除了這個之外還涵蓋了大部分其他案例。
任何人都可以指導我如何解決這個特殊情況?
這裏是我的代碼:
def possible(string, given_set):
a = False
if len(string) > len(given_set):
return False
if string == '':
return True
for i in string:
for index, value in enumerate(given_set):
if i in value:
a = possible(string[1:],given_set[0:index] + given_set[index+1:])
return a
else:
return False
如果你是將它作爲一個遞歸實現,刪除'我在字符串',只能在字符串的第一個字符 – fferri
它看起來像問題是你在第一集中找到「我」,然後試圖找到「AM」在最後的三組中,這是錯誤的,它會返回到變量'a'中,並返回False。你需要繼續前進,因爲在這種情況下,你需要從第二組中選擇「我」。只有返回True才返回。 –
@JordanTrudgett我跟着你說的話。我在答案中添加了我的解決方案。你認爲這樣可以嗎? – 277roshan