自己的網(wǎng)站在哪里找線上推廣渠道
應(yīng)用
一個長度為[1, 50]、元素都是字符串的非空數(shù)組,每個字符串的長度為[1, 30],代表非負(fù)整數(shù),元素可以以“0”開頭。例如:[“13”, “045”,“09”,“56”]。
將所有字符串排列組合,拼起來組成一個新字符串,輸出其中最小的數(shù)字:
如果是多位數(shù)字,優(yōu)先選擇不以“0”開頭的最小數(shù)字;
如果新拼接的字符串都是以“0”開頭,則選取最小的,并把開頭部分的“0”去掉再輸出;
如果是單位字符0,直接輸出。
實現(xiàn)
strings = input("請輸入若干個代表非負(fù)整數(shù)的字符串,可以以“0”開頭,以空格分隔:").split()
array = []
for i in strings:array.append(i)
# print(array)def check_all_elements_start_with(list):check_result = Trueunnormal_num_sum = 0for i in list:if i[0] == "0":unnormal_num_sum += 1# 元素都是“0”開頭if unnormal_num_sum == len(list):check_result = Falsereturn check_resultdef normalize(list):# 每個字符串去除首位“0”for i in list:i[1:]check_result = check_all_elements_start_with(list)if check_result:return listelse:normalize(list)def PaiLie_yu_ZuHe(list):# 復(fù)制一下l1 = list# 去重result = set()# # 原始順序加入到結(jié)果 # 測試幾次發(fā)現(xiàn)多此一舉# string = ""# for k in list:# string = string + k# result.add(string)# 基于原始順序,從左到右逐一交換位置:弟i個元素分別與后面的每個元素組成新字符串for i in range(0, len(l1)-1):for j in range(i+1, len(l1)):temp = l1[i]l1[i] = l1[j]l1[j] = tempstring = ""for k in l1:string = string + kresult.add(string)# 復(fù)原l1 = list# 基于原始順序,從右到左逐一交換位置:弟i個元素分別與前面的每個元素組成新字符串for i in range(1, len(l1)):for j in range(0, i):temp = l1[i]l1[i] = l1[j]l1[j] = tempstring = ""for k in l1:string = string + kresult.add(string)# 復(fù)原l1 = listr = []for i in result:r.append(i)# print(r)return rdef filter_and_sort(list):# 篩選不是“0”開頭的元素,并int化l = []for i in A:if i[0] != "0":l.append(int(i))l.sort()return l# PaiLie_yu_ZuHe(array)# 單位字符串
if len(array) == 1:check_result = check_all_elements_start_with(array)if check_result:# 字符串為正常數(shù)字print(f"最小數(shù)字為{array[0]}")else:# 字符串為不正常數(shù)字normalize(array)print(f"最小數(shù)字為{array[0]}")
# 多位字符串
else:A = PaiLie_yu_ZuHe(array)check_result = check_all_elements_start_with(A)if check_result:# 字符串為正常數(shù)字L = filter_and_sort(A)print(f"最小數(shù)字為{L[0]}")else:# 字符串為不正常數(shù)字B = normalize(A)L = filter_and_sort(B)print(f"最小數(shù)字為{L[0]}")
請輸入若干個代表非負(fù)整數(shù)的字符串,可以以“0”開頭,以空格分隔:08 10 2
最小數(shù)字為10082請輸入若干個代表非負(fù)整數(shù)的字符串,可以以“0”開頭,以空格分隔:20 1
最小數(shù)字為120