目前共有7篇帖子。 字体大小:较小 - 100% (默认)▼  内容转换:不转换▼
 
点击 回复
40 6
最长字符串
见习魔法师 二级
1楼 发表于:2026-3-23 15:28

小蓝手里有一个单词本,记录在 words.txt 中,其中每一行包含一个仅有小写英文字母组成的单词。

小蓝想要找到一个最长的优美字符串。

一个长度为 n 的字符串 s=c1c2…cns=c1​c2​…cn​ 是优美字符串,必须满足 s 在单词本中,且满足以下两个条件之一:



n=1n=1;
n>1n>1,且存在一个优美字符串 s′, s′ 的长度为 n−1n−1,s′ 的字符调整顺序后与 c1c2…cn−1c1​c2​…cn−1​ 一致。

例如,假设 words.txtwords.txt 文件中的单词如下:bb、bcbc、cbdcbd、dbcadbca,那么:



s1=bs1​=b,长度 11,是优美字符串;
s2=bcs2​=bc,s′=bs′=b 在单词本中出现过,且是优美字符串,所以 s2s2​ 是优美字符串;
s3=cbds3​=cbd,s′=bcs′=bc 在单词本中出现过,且是优美字符串,所以 s3s3​ 是优美字符串;
s4=dbcas4​=dbca,s′=cbds′=cbd 在单词本中出现过,且是优美字符串,所以 s4s4​ 是优美字符串。

请帮助小蓝从单词本 words.txtwords.txt 中找出长度最大的优美字符串,如果存在多个答案,优先使用字典序最小的那一个作为答案。

输入格式

使用标准输入读取 words.txt 里的字符串。

输出格式

输出一行包含一个字符串,表示长度最大的优美字符串(若有多个,输出字典序最小的那个)。

见习魔法师 二级
2楼 发表于:2026-3-23 15:35
1读取文件

2按行存储

3长度排序

4已知的长度为1的加入判断集合,结果集合

5将字符串按字母序重新组合,按顺序减少一个字符,将减少后的字符组合成的集合查看是否在结果集合,是就将重新排列后的字符串加入集合。排序前的结果加入结果集合

6结果集合中最长,字典序最小的进行输出

 
巨大八爪鱼:C语言二维字符数组=字符串数组。
  2026-3-23 15:42 回复
:回复 @巨大八爪鱼:我打算写python
  2026-3-23 18:41 回复
见习魔法师 二级
3楼 发表于:2026-3-23 18:42

审题错误,现在修改为

1读取文件 

2按行存储 

 3长度排序 

 4已知的长度为1的加入判断集合,结果集合 

 5将字符串减少最后一个字符,将减少后的字符串排序,排序后的查看是否在判断集合,是就将重新排列后的字符串加入集合。排序前的结果加入结果集合

 6结果集合中最长,字典序最小的进行输出

 
:看来一般补需要打开文件操作
  2026-3-23 21:01 回复
见习魔法师 二级
4楼 发表于:2026-3-23 21:00

import os

import sys


# 请在此输入您的代码

word=[]

for line in sys.stdin:

    w = line.strip()

    if w:

        word.append(w)#忘记加w

word.sort(key=lambda x: x,reverse=True)#按字典序反排

word.sort(key=lambda x:len(x))#冒号后是两个排序依据,先排号不用再排

#不行题目要求字典序最小

#读取,按长度排序

#排序,存储排序后的单词

goodword_sort = set()#list改set(),加快查找

result_word=[]

#结果

for w in word:

  if len(w)==1:

    goodword_sort.add(w)

    result_word.append(w)


  #不为1,裁剪排序

  else:

    good_w=w[:-1]

    good_sort_w=''.join(sorted(good_w))

    if good_sort_w in goodword_sort:#判断是,添加

      goodword_sort.add(''.join(sorted(w)))

      result_word.append(w)#加的时候加轮到处理的字符串


print(result_word[-1])


 

回复帖子

内容:
用户名: 您目前是匿名发表
验证码:
(快捷键:Ctrl+Enter)
 

本帖信息

点击数:40 回复数:6
评论数: ?
作者:
最后回复:
最后回复时间:2026-3-23 21:01
 
©2010-2026 Purasbar Ver2.0
除非另有声明,本站采用知识共享署名-相同方式共享 3.0 Unported许可协议进行许可。