/*
【最小字母删除】
对于一个仅含有小写字母的字符串,定义一次删除操作:
选择字符串中最小字典序的字母,若有多个相同字母,则选择最左边那个,将其从字符串中删除
给定字符串和正整数k,输出进行k次删除操作之后的字符串结果
输入描述
一个仅含有小写字母的字符串s
k
输出描述
进行k次删除操作之后的字符串
【示例】
输入
badabpzib
3
输出
dbpzib
*/
(NSString*) getMinString:(NSString*)str{
let length = str.count;
var dic = [String : (bool, [Int])]();
for(Int i = 0; i <length-1; i++){
NSString *ch = [str string...withRange:[NSRangeMake(i,1)]];
if(ch) {
'if(dic[ch]) {
let (isNeedDelete, indexArr) = dic[ch];
if isNeedDelete {
dic[ch] = (false,[i])
} else {
var muIndexArr = Array(indexArr)
muIndexArr.append(i);
dic[ch] = (false, muIndexArr.copy);
}
} else {
dic[ch] = (true,[i]);
}
}
}
let goalDic = [Int: String]()
let copyDic = dic.copy
for (ch, tuple) {
let (_, indexArr) = tuple
for index in indexArr {
goalDic[index] = ch
}
}
var goalStr = ""
let tempIndexArr = goalDic.keys.sortedBy{<}
for index in tempIndexArr {
goal = goal.append(goalDic[index])
}
return goalStr;
}