(每日一练28796)题目名称:编码

文盲老顾
WEB应用领新星创作者
博客专家认证
2023-05-21 14:01:55

编码工作常被运用于密文或压缩传输。这里我们用一种最简单的编码方式进行编码:把一些有规律的单词编成数字。 字母表中共有26个字母{a,b,…,z},这些特殊的单词长度不超过6且字母按升序排列。把所有这样的长度相同的单词放在一起,按字典顺序排列,一个单词的编码就对应着它在整个序列中的位置。 你的任务就是对于所给的单词,求出它的编码。

今天周赛碰到了,前两天每日一练也碰到了,可是前两天没耐心做这个题目,结果今天没得分。。。算了,用暴力方法先做一遍吧

s = input()
if list(s) != sorted(s):
    print(0)
else:
    cs = ' abcdefghijklmnopqrstuvwxyz'
    z = [cs.index(c) for c in ('      ' + s)[-6:]]
    z = [v if i == 0 else z[i] - z[i - 1] for i,v in enumerate(z)][::-1]
    ans,v = 1,[1,0,0,0,0,0]
    while v != z:
        ans += 1
        v[0] += 1
        j = 0
        while v[j] > 26 or sum(v[:j + 1]) > 26 - sum(v[j + 1:]):
            v[j] = 1
            v[j + 1] += 1
            j += 1
        t = [x for x in v if x > 0][::-1]
        t = [sum(t[:i + 1]) for i,x in enumerate(t)]
    print(ans)
...全文
136 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

321

社区成员

发帖
与我相关
我的任务
社区描述
主要用于技术交流,包括但不限于 .net,mssql,js,css,python,算法,运维。也可以晒最新技术,美图,运动等。最后,如果有问题,可以提问,老顾能帮忙的会尽量帮忙哦。
前端sqlserverasp.net 技术论坛(原bbs) 北京·西城区
社区管理员
  • 文盲老顾
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧