描述
ENG
给定一个字符串str
,现在要对该字符串进行删除操作,保留字符串中的k个字符且相对位置不变,并且使它的字典序最小,返回这个子串。
您在真实的面试中是否遇到过这个题? 是
题目纠错
样例
例1:
输入:str="fskacsbi",k=2
输出:"ab"
解释:“ab“是str中长度为2并且字典序最小的子串
例2:
输入:str="fsakbacsi",k=3
输出:"aac"
public static String deleteString(String str,int k){
if(str.length() == k)return str;
if(str.length() < k)return "";
String result = "";
int start = 0;//已经比较到此
while (result.length() < k){
char c = str.charAt(start);//最小值 赋初始值
int next = start;
for(int i = start+1; i <= str.length() - (k - result.length()); i++){//从start+1 开始比较 还有几个字符未找出,预留出剩余-1字符空间
if(c > str.charAt(i)){
c = str.charAt(i);
next = i;//下一次 从start开始比较
}
}
result += c;//结果累加
start = next + 1;
}
return result;
}