当前位置: 首页 > news >正文

笔试-排列组合

应用

一个长度为[1, 50]、元素都是字符串的非空数组,每个字符串的长度为[1, 30],代表非负整数,元素可以以“0”开头。例如:[“13”, “045”,“09”,“56”]。
将所有字符串排列组合,拼起来组成一个新字符串,输出其中最小的数字:
如果是多位数字,优先选择不以“0”开头的最小数字;
如果新拼接的字符串都是以“0”开头,则选取最小的,并把开头部分的“0”去掉再输出;
如果是单位字符0,直接输出。

实现

strings = input("请输入若干个代表非负整数的字符串,可以以“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):# 复制一下l1 = list# 去重result = set()# # 原始顺序加入到结果 # 测试几次发现多此一举# 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)# 复原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)# 复原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:# 字符串为正常数字print(f"最小数字为{array[0]}")else:# 字符串为不正常数字normalize(array)print(f"最小数字为{array[0]}")
# 多位字符串
else:A = PaiLie_yu_ZuHe(array)check_result = check_all_elements_start_with(A)if check_result:# 字符串为正常数字L = filter_and_sort(A)print(f"最小数字为{L[0]}")else:# 字符串为不正常数字B = normalize(A)L = filter_and_sort(B)print(f"最小数字为{L[0]}")
请输入若干个代表非负整数的字符串,可以以“0”开头,以空格分隔:08 10 2
最小数字为10082请输入若干个代表非负整数的字符串,可以以“0”开头,以空格分隔:20 1
最小数字为120
http://www.lryc.cn/news/530533.html

相关文章:

  • Java序列化详解
  • ChatGPT与GPT的区别与联系
  • MySQL入门 – CRUD基本操作
  • Redis背景介绍
  • PPT演示设置:插入音频同步切换播放时长计算
  • DIFY源码解析
  • [权限提升] Wdinwos 提权 维持 — 系统错误配置提权 - Trusted Service Paths 提权
  • 【算法】回溯算法专题② ——组合型回溯 + 剪枝 python
  • LeetCode:121.买卖股票的最佳时机1
  • pytorch生成对抗网络
  • Visual Studio Code应用本地部署的deepseek
  • 用 HTML、CSS 和 JavaScript 实现抽奖转盘效果
  • Skewer v0.2.2安装与使用-生信工具43
  • C语言:链表排序与插入的实现
  • 【Elasticsearch】doc_values 可以用于查询操作
  • 深度学习深度解析:从基础到前沿
  • JVM的GC详解
  • 【开源免费】基于Vue和SpringBoot的校园网上店铺系统(附论文)
  • 测压表压力表计量表针头针尾检测数据集VOC+YOLO格式4862张4类别
  • Vue 3 30天精进之旅:Day 12 - 异步操作
  • 【网络】3.HTTP(讲解HTTP协议和写HTTP服务)
  • [paddle] 矩阵相关的指标
  • docker部署SpringBoot项目简单流程
  • Python学习——函数参数详解
  • Chromium132 编译指南 - Android 篇(一):编译前准备
  • .Net / C# 繁体中文 与 简体中文 互相转换, 支持地方特色词汇
  • Java泛型深度解析(JDK23)
  • 【贪心算法篇】:“贪心”之旅--算法练习题中的智慧与策略(一)
  • AJAX XML
  • 踏入编程世界的第一个博客