【最小字母删除】swift语言实现

/*
【最小字母删除】

对于一个仅含有小写字母的字符串,定义一次删除操作:
选择字符串中最小字典序的字母,若有多个相同字母,则选择最左边那个,将其从字符串中删除
给定字符串和正整数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;
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。