それは4 * 4 * 4 * 4種類あるので、実際には、暴力は、解決策になることができます
クラスソリューション: デフのfindNext(自己、CHAR、NUMS): 私は0 = I <lenは(NUMS)ながらの: :NUMS [i]を== CHAR場合 I = LEN(NUMS)の場合- 1:! リターンNUMS [I + 1 ] 他: 戻りなし I + = 1つの 戻りなし nextClosestTime DEF(自己、時間:STR) - > STR: NUMS = [] iについて[0、1、3、4]: もし時間[i]がないNUMSで: nums.append(時間[i])と NUMS =ソート(NUMS) C4 = self.findNext(時間[4]、NUMS) C4およびINT(時間[3] + C4)<60であれば: 復帰時間[4] + C4 C3 = self.findNext(時間[3]、NUMS) :C3及びINT(C3 + NUMS [0])<60であれば 、戻り時間[3] + C3 + NUMS [0] C1 = self.findNext(時間[1 ]、NUMS) C1及びINT(時間[0] + C1)<= 24であれば: 復帰時間[0] + C1 + ':' + NUMS [0] + NUMS [0] C0 = self.findNext(時間[0 ]、NUMS) もしC0およびINT(C0 + NUMS [0])<= 24: 戻りC0 + NUMS [0] + ':' + NUMS [0] + NUMS [0]に 戻りNUMS [0] + NUMS [0 ] + ':' + NUMS [0] + NUMS [0]