0%

题目:字符串压缩

  • 利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 样例1
    输入:"aabcccccaaa"
    输出:"a2b1c5a3"

    # 样例2
    输入:"abbccd"
    输出:"abbccd"
    解释:"abbccd"压缩后为"a1b2c2d1",比原字符串长度更长。

    # 提示:
    字符串长度在[0, 50000]范围内。
阅读全文 »

题目:一次编辑

  • 字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 示例 1:
    输入:
    first = "pale"
    second = "ple"
    输出: True

    # 示例 2:
    输入:
    first = "pales"
    second = "pal"
    输出: False
阅读全文 »

题目:回文排列

解题方法:

  1. 位运算:统计某个字符出现的次数是奇数还是偶数,可以用异或^来统计
  2. 哈希计数
  3. 桶计数(较简单,未给出代码)
  • 原理都是统计字符串中每个字符出现的频数,如果奇数的个数小于等于1,则可以产生回文排列,否则不行

  • 三种方法时间复杂度相同,但所用到的空间不同,1 < 2 < 3

阅读全文 »

题目:URL化

解题方法:

  1. 新建字符串,双指针法
  2. S上从后往前,双指针法

两种解法时间复杂度一样,都是\(O(n)\),解法二不需要额外的空间

阅读全文 »