目前共有7篇帖子。 字體大小:較小 - 100% (默認)▼  內容轉換:不轉換▼
 
點擊 回復
25 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)
 

本帖信息

點擊數:25 回複數:6
評論數: ?
作者:
最後回復:
最後回復時間:2026-3-23 21:01
 
©2010-2026 Purasbar Ver2.0
除非另有聲明,本站採用創用CC姓名標示-相同方式分享 3.0 Unported許可協議進行許可。