每日一练——第6天

题目描述
实现一个算法来压缩一个字符串。压缩的要求如下:
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)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值