您将获得一个字符串s和一个整数k。
您必须找到满足以下条件的另一个字符串t:
t必须是s的子序列。 每个字符必须至少出现k次。 t的长度必须尽可能大。 如果t有多个字符串且长度可能最大,请选择 按字典顺序最小的一个。 例如,假设字符串是s = hackerrank且k = 2。
job_descripton_list
我使用2 for循环来比较每个字符和整个字符串。如果任何字符的计数大于k的值,则该特定字符存储在字符数组中并作为结果打印。 我在方法中使用null作为返回值。如何返回字符串?如何解决超时问题? 如何降低程序的复杂性??
The solution for this is t=akrrak. Here t is a subsequence of k, it conta
ins the characters a,k and r repeated at least k=2 times. And, it is the
only longest possible subsequence that satisfies the conditions.
Input Format
The first line contains a string s denoting the original string.
The second line contains an integer k.
Constraints
String s will only contain lowercase English characters.
Every input will have a valid solution.
Output Format
Print the string t on a single line.
Sample Input 0
hackerrank
2
Sample Output 0
akrrak
Explanation 0
In 'akrrak', all the characters occur exactly 2 times.
答案 0 :(得分:0)
如何返回字符串?
现在您正在打印解决方案。相反,您需要将其保存到变量中。我认为这里StringBuilder
是合适的。您可以这样声明:
StringBuilder result = new StringBuilder();
您可以像这样添加:
result.append(ch[i]);
并返回基础字符串,如下所示:
return result.toString();
如何解决超时问题??
除非您的输入非常大或超时时间非常短,否则您的代码不应该超时。
如何降低程序的复杂性?
您当前程序的复杂程度似乎是O(n ^ 2),这并非不合理。有办法让它成为O(n),但除非你的输入非常大,否则我认为它确实会有所作为。