[面经]阿里游戏一面的算法题

本文分享了阿里游戏一面中遇到的一道算法题,题目要求删除字符串中的重复字符,初始O(N^2)解决方案,通过快速排序的partition思想优化到O(N),最后介绍了一个增强版的partition算法,解决了字符串乱序的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:两天前参加阿里游戏的面试,一面时出了一道面试题。那时我看楞了,好像没做过这种题型,看起来很容易又很难。很容易是,使用O(N^2)就可以解决,难得是,优化时间复杂度。


题目:字符串删除字符(字符可能会有重复,要一起删掉)

思路一(反正面试我没这么写,你们随便看看)

一开始看到题目,思路就遍历字符串,一个个字符比较,然后删除它。
(1) 遍历数组,找到目标字符;
(2) 移动目标字符后面的所有字符,各向前移动复制1位;
(3) 删除最后一位字符(或标识它不可用);
(4) 重复(1)直至循环结束。

优点(当然有):容易想出来,代码逻辑简单;
缺点:时间复杂度O(N^2)。

    public static String deleteChar(String str, char c)
    {
        if (str == null || "".equals(str)) return str;
        
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值