博客
关于我
524. 通过删除字母匹配到字典里最长单词
阅读量:781 次
发布时间:2019-03-25

本文共 547 字,大约阅读时间需要 1 分钟。

好的,我来分享一下解决这个问题的思路。这个问题要求我们在字符串s中删除任意多个字符,从而使得剩下的字符串既是最长的,也是字典序最小的。

这个问题可以通过双指针的方法来解决。具体来说,我们有两个指针,一个指针在字符串s上移动,另一个在字典中的每个字符串上移动。对于每一个字典中的字符串,我们通过这两个指针来比较s和字典中的字符串,看看是否存在相同的子序列。

具体步骤如下:

  • 初始化res为空字符串。
  • 遍历字典中的每一个字符串d[i]。
  • 使用双指针l和r,一开始都指向0。
  • 移动这两个指针,比较s[l]和d[i][r],如果相等,就同时移动l和r,否则只移动r。
  • 这样比较下去,直到s的长度或d[i]的长度被其中一个指针移动到末尾。
  • 如果当前的d[i]的长度比res的长度长,或者长度相同但d[i]的字典序比res小,那么更新res为这个d[i]。
  • 遍历完所有的情况后,返回res。
  • 这个方法的关键是通过双指针的逐字符比较,找出最长且字典序最小的字符串。为了优化,我们可以先对字典进行排序,这样字典序小的字符串会排在前面,只需要检查长度是否更长即可更新结果。

    该算法的时间复杂度为O(mn),其中m是s的长度,n是字典的大小。这种方法在处理较大字典时可能需要优化,但对于大多数场景来说已经足够有效。

    转载地址:http://ypjuk.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现anagrams字谜算法(附完整源码)
    查看>>
    Objective-C实现ApproximationMonteCarlo蒙特卡洛方法计算pi值算法 (附完整源码)
    查看>>
    Objective-C实现area under curve曲线下面积算法(附完整源码)
    查看>>
    Objective-C实现argmax函数功能(附完整源码)
    查看>>
    Objective-C实现arithmetic算术算法(附完整源码)
    查看>>
    Objective-C实现armstrong numbers阿姆斯壮数算法(附完整源码)
    查看>>
    Objective-C实现articulation-points(关键点)(割点)算法(附完整源码)
    查看>>
    Objective-C实现atoi函数功能(附完整源码)
    查看>>
    Objective-C实现average absolute deviation平均绝对偏差算法(附完整源码)
    查看>>
    Objective-C实现average mean平均数算法(附完整源码)
    查看>>
    Objective-C实现average median平均中位数算法(附完整源码)
    查看>>
    Objective-C实现average mode平均模式算法(附完整源码)
    查看>>
    Objective-C实现avl 树算法(附完整源码)
    查看>>
    Objective-C实现AvlTree树算法(附完整源码)
    查看>>
    Objective-C实现backtracking Jump Game回溯跳跃游戏算法(附完整源码)
    查看>>
    Objective-C实现BACKTRACKING 方法查找集合的幂集算法(附完整源码)
    查看>>
    Objective-C实现bailey borwein plouffe算法(附完整源码)
    查看>>
    Objective-C实现balanced parentheses平衡括号表达式算法(附完整源码)
    查看>>
    Objective-C实现base64加密和base64解密算法(附完整源码)
    查看>>
    Objective-C实现base64加解密(附完整源码)
    查看>>