【发布时间】:2021-10-12 20:28:46
【问题描述】:
我们将得到一个字符串 s。假设例如“creepfe”。我们要做的是删除重复的,而是在该位置添加一个新字母,并且新字母必须是按字母顺序在重复字母旁边可用的不同字母。所以它是这样的:
creepfe 到 crefpfe -- 第一个 e 是不同的,第二个 e 更改为 f,这与此不同。
crefpfe 到 crefpge -- 第二个 f 更改为 g,因为我们之前已经有了 f。
crefpge 到 crefpgf -- 因为 e 已经存在。
现在我们又得到了 f duplicate ,所以把它改成 crefpgg ,这又得到了 g duplicate 所以最后我们到达了 "crefpgh" ,它有所有不同的字母。
最近开始学习java,很欣赏一个工作代码,但是真正需要一个好的算法。
编辑:是的,大写字母也算作重复。而且字符串长度限制在 10-15,所以不用担心用完不同的字母。
【问题讨论】:
-
大写字母呢?这算作重复吗?
-
是的,大写字母计入重复!
-
似乎这是集合的任务。您是否尝试过对字符串中的字符使用 set?
-
这里是初学者,除了暴力破解之外不知道如何进行(编写一个函数来检查字符串中是否存在一个字母,如果存在则添加下一个字母。然后再重复一次)真的需要一个好主意降低复杂性。
-
^ 好吧,使用 set 是因为检查之前是否已经看到一个字母( contains() )是一个常数 O(1) 时间复杂度。
标签: java string algorithm data-structures