2020-05-31 17:37:47
问题描述:
给定一个字符串str
,现在要对该字符串进行删除操作,保留字符串中的k个字符且相对位置不变,并且使它的字典序最小,返回这个子串。
样例
例1:
输入:str="fskacsbi",k=2
输出:"ab"
解释:“ab“是str中长度为2并且字典序最小的子串
例2:
输入:str="fsakbacsi",k=3
输出:"aac"
问题求解:
按区间去寻找最小值即可。
public String deleteChar(String str, int k) { StringBuffer sb = new StringBuffer(); int start = 0; while (sb.length() < k) { char c = str.charAt(start); int next = start; for (int i = start + 1; i <= str.length() - (k - sb.length()); i++) { if (str.charAt(i) < c) { c = str.charAt(i); next = i; } } sb.append(c); start = next + 1; } return sb.toString(); }