我最近参加了某种 Java 语言的在线测试。
在一个问题中,我被要求实现一个函数,给定一个字符串将返回最少数量的字符,必须从字符串中删除这些字符才能获得新的按字典顺序排列的字符串。
这意味着,当我们将字符串“banana”传递给我们的方法时,它将返回 3。
从单词“banana”中,我们需要删除第一个字母(“b”)、第三个字母(“n”)和第六个字母(“a”),得到字符串“aan”。
不可能删除更少的字母。
我试图找出解决方案很长一段时间,但没有任何效果。
可以工作的一件事是检查原始字符串中的每个可能的子字符串,检查它是否已排序并比较删除的数字的数量,但对于较长的字符串来说会很糟糕。
对算法有什么想法吗?