美文网首页
算法:字符串

算法:字符串

作者: Zack_H | 来源:发表于2019-03-18 16:02 被阅读0次

Map

  • 332 重新安排行程
    使用Map统计时写法:
for (int i = 0; i < keys.length; i++) {
    if (!map.containsKey(keys[i]))
        map.put(keys[i], new ArrayList<>());
    map.get(keys[i]).add(values[i]);
}

字符串

  • Api of string.h
    strlen: 返回值是unsigned int,注意unsigned int不能直接与负数比较。
    strcpy: char *strcpy(char *dest, const char *src)。
    strcat: extern char *strcat(char *dest, const char *src),dest不可以是常量池的字符串,必须是实例化后,且长度足够。
  • Api of limits.h
    INT_MIN: -2147483648
    INT_MAX: 2147483647
  • 344 反转字符串
    不使用额外变量交换数值 II:
a = a+b;
b = a-b;
a = a-b;
  • 7 整数反转
    数值越界判断:
while (x != 0) {
    int pop = x % 10;
    x /= 10;
    if (rev > INT_MAX/10 || (rev == INT_MAX / 10 && pop > 7)) return 0;
    if (rev < INT_MIN/10 || (rev == INT_MIN / 10 && pop < -8)) return 0;
    rev = rev * 10 + pop;
}
  • 125 验证回文串
    双指针法 II: 设置头尾指针,遇到不合法情况跳过,合法情况下比较。
while (i<j){
    while (('0'>s[i] || s[i]>'9') && ('a'>s[i] || s[i]>'z') && ('A'>s[i] || s[i]>'Z') && i<j)
        i++;
    while (('0'>s[j] || s[j]>'9') && ('a'>s[j] || s[j]>'z') && ('A'>s[j] || s[j]>'Z') && i<j)
        j--;
    if (s[i] != s[j])
        if ( ('0'<=s[i] && s[i]<='9') || !equalIgnoreCast(s[i],s[j]))
            return false;
    i++;
    j--;
}
  • 8 字符串转换整数 (atoi)
    计算x的位数:log_{10}(x)
    各位数字构造负数:
rev = rev*10 - pop;
  • 28 实现strStr()
    模式匹配常规模板:
while (i<mainLen && j<pLen){
    if (main[i] == p[j]){
      i++;
      j++;
    }else{
        i = i - j;
        j = 0;
    }
}

KMP求next数组: 当p[0...k-1] == p[j-k...j-1]时,next[j] = k。

  • 14 最长公共前缀
    分治法:问题规模为1时返回原值,求左右两侧子问题解,取左右子解的LCP。
    二分查找法:取最短字符串作为初始串,取其左部分与全字符串数组比较,若是LCP,则取左;否则取右。直至左指针小于右指针跳出循环。
while (low <= high) {
    int middle = (low + high) / 2;
    if (isCommonPrefix(strs, middle))
        low = middle + 1;
    else
        high = middle - 1;
}
return strs[0].substring(0, (low + high) / 2);

相关文章

  • KMP算法文章合集

    字符串的查找:朴素查找算法和KMP算法 暴力匹配算法与KMP算法(串的匹配) 字符串查找算法BF和KMP 字符串匹...

  • 字符串匹配算法

    场景:字符串A为主串,字符串B为模式串,比较字符串B是否能够在字符串A中进行匹配? 匹配算法:BF算法和RK算法。...

  • KMP字符串匹配算法

    KMP字符串匹配算法 先总结一下之前的几种字符串匹配算法 1 BF算法, 最简单的字符串匹配算法, 可以直接使用s...

  • 数据结构与算法 -- 串,BF算法和RK算法

    BF算法 BF(Brute Force)算法,即暴力匹配算法 如果在字符串A中查找字符串B,那么字符串A就是主串,...

  • 字符串匹配

    indexOf 底层就是使用字符串匹配算法 字符串匹配算法很多 BF( Brute Force)算法 暴力匹配算...

  • 数据结构与算法-字符串

    字符串又被成为串 字符串的存储结构 字符串的比较 朴素的模式匹配算法 BF算法

  • 一道关于字符串压缩的面试题

    题目 编写一个算法,实现基本的字符串“压缩”算法,比如对于字符串'abbbbffcccdddcc',经过算法处理之...

  • W3Cschool JavaScript脚本算法编程实战 初级脚

    初级脚本算法 1. 翻转字符串算法挑战 实战翻转字符串算法 你可以先把字符串转化成数组,再借助数组的reverse...

  • 算法(2)KMP算法

    1.0 问题描述 实现KMP算法查找字符串。 2.0 问题分析 “KMP算法”是对字符串查找“简单算法”的优化。 ...

  • 字符串匹配算法

    拉勾教育中《重学数据结构与算法》第08节讲到,字符串和如何应对字符串匹配算法。 字符串 字符串(string) 是...

网友评论

      本文标题:算法:字符串

      本文链接:https://www.haomeiwen.com/subject/tigvmqtx.html