Interview100-89.4 删除字符串中的数字并压缩字符串

题目

删除字符串中的数字并压缩字符串。如字符串“abc123de4fg56”处理后变成“abcdefg”。注意空间和效率。

解法

1. 最容易想到的方法。遍历一遍将字符复制到另一个辅助数组中里。但使用了一个辅助数组。

2. 不使用辅助数组,使用快慢指针的方式,快指针i遍历原字符串中的每个字符,慢指针j则始终指向当前遍历字符串中的字符的位置,如果i指针当前指向的为一个字符,则将array[i]复制到array[j]的位置上,i和j同时向后移动一个,如果i指向的为一个数字,i继续后移,j不动,直到i再次遍历到一个字符的位置,然后将当前的字符复制到j的下一个位置中。

DELETE-COMPRESS(char[] str):
    int i = 0, j = 0;
    for i = 0 to str.length:
        if str[i] > '9' or str[i] < '0':
            array[j] = array[i];
            j++;
    return str;

这种方式的时间复杂度为O(n),且不需要辅助空间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值