题目描述
实现一个算法来压缩一个字符串。压缩的要求如下:
1.需要判断压缩能不能节省空间, 仅在压缩后字符串比原字符串长度更短时进行压缩。
2.压缩的格式是将连续相同字符替换为字符+数字形式, 例如"AAABCCDDDD"变为"A3BC2D4"。
输入描述
输入一行字符串, 长度不超过500.
输出描述
输出一行。若输入的字符串可压缩, 则输出压缩后的字符串, 否则输出NO。
import os
import sys
# 请在此输入您的代码
str1=input()
str2=""
for i in str1:
if i not in str2:
n=str1.count(i)
if n>1:
str2+=i+str(n)
else:
str2+=i
if len(str2)>=len(str1):
print("NO")
else:
print(str2)
问题描述
给定n个正整数a₁,a₂,…, an, 你可以将它们任意排序。a_{1},a_{2}, \dotsc ,a_{n},
现要将这n个数字连接成一排, 即令相邻数字收尾相接, 组成一个数。
问, 这个数最大可以是多少。
输入格式
第一行输入一个正整数n\(1≤n≤20)。
第二行输入n个正整数(a_{1},a_{2}, \dotsc ,a_{n}(1 \le a_{i} \le 10^{5})。
输出格式
输出一个整数, 表示答案。
对于两个数a和b,,我们可以通过比较 ab和 ba的大小来决定它们的顺序。如果,ab>ba,则a应该排在b的前面; 否则, b应该排在a的前面。
import os
import sys
# 请在此输入您的代码
n=int(input())
asd=input().split()
for i in range(len(asd)):
for j in range(len(asd)-i-1):
if int(asd[j]+asd[j+1])<int(asd[j+1]+asd[j]):
asd[j],asd[j+1]=asd[j+1],asd[j]
asd=''.join(asd)
print(asd)