删除最小字母(第四范式算法一面)

一、题目描述

给定一个长度为n的小写字符数组,一次操作是删除一个最小字母,如有多个删除最靠左的。要求输出操作k次后的字符串。

输入:abcdabcd   k = 3
输出:cdbcd 

二、解题思路 & 代码

由于都是小写字母,字符类型比较简单,故而可以用简便的方法

  1. 采用哈希表将字符串进行计数
  2. 将键值从小到大排序,而后从前往后删除,当删除的数量 == k 时停止
from collections import Counter

def delMinAlpha(s, k):
    n = len(s)
    dic = Counter(s)
    print("dic:", dic)
    sum_ = 0
    del_dic = {
   }
    key_list = sorted(list(dic.keys()))
    print("key_list:", key_list)
    for stop_ind, key in enumerate(key_list):
        sum_ = sum_ + dic[key]
        del_dic[key] = dic[key]
        if sum_ >= k:
            break
    print("ind:", stop_ind)
    print("sum_:", sum_)

    stop_key = key_list[stop_ind]
    print("stop_key:", stop_key)

    del_dic[stop_key] = dic[stop_key] - (sum_ - k)
    print("del_dic:", del_dic)
    new_list = ''
    for j in range(n):
        if s[j] not in del_dic:                      # 要删除的键值 不存在
            new_list += s[j]
        elif s[j] in del_dic and del_dic[s[j]] > 0:  # 要删除的键值 存在,且还没删光
            del_dic[s[j]] -= 1
            continue
        elif s[j] in del_dic and del_dic[s[j]] <= 0:  # 即使要删除的键值 存在,但是已经删光了
            new_list += s[j]
    return new_list

if __name__ == '__main__':
    # ASCII_num = ord('a') # 返回 ASCII 码
    s = 'abcdabcdabcdabcd'
    k = 14
    res = delMinAlpha(s, k)
    print("res:", res)
    
全部评论

相关推荐

码农索隆:以下是我以我微薄的认知提供的建议: 1.考个教师资格证,去当体育考试。 2.去健身房当健身教练(因为在我印象里面体育生身材都不错)。
点赞 评论 收藏
分享
02-01 12:05
复旦大学 Java
腾讯的提前批大概率应该是没有笔试的,但是这个时候有相当部分的同学简历估计都没有准备好,没准备好的同学也不用急,大部分都是3月之后开,这个时候开的绝大多数都是神仙打架,问的东西也比较难,打算投递的同学也多看下计算机网络和操作系统,腾讯对这部分的知识问的比较多。另外多刷下牛客的热门题库,刷题注意刷ACM模式,和牛客的周赛题,腾讯有的部门会从这里面出原题。我是@程序员花海关注我,带你了解更多校招资讯!
程序员花海:还没有来得及准备的同学可以看下学习路线:https://www.nowcoder.com/discuss/824693499982315520?sourceSSR=users算法题:https://www.nowcoder.com/feed/main/detail/20e7a999fa04485b88340a274411ca0d?sourceSSR=users八股文:https://www.nowcoder.com/discuss/833102362771251200?sourceSSR=users简历书写方式:https://www.nowcoder.com/discuss/839907820706205696?sourceSSR=users都是以前在牛客发的文章~
软开人,秋招你打算投哪些...
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务