博客
关于我
LeetCode 392 判断子序列[贪心] HERODING的LeetCode之路
阅读量:386 次
发布时间:2019-03-05

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

判断字符串s是否是另一个字符串t的子序列的方法是使用双指针遍历。一个指针遍历s,另一个遍历t。当两个指针指向相同字符时,s的指针前进。无论是否匹配,t的指针总是前进。当t的指针遍历完时,检查s的指针是否到达末尾。如果是,则s是t的子序列。

解题思路:

  • 初始化指针: 使用两个指针,分别遍历字符串s和t。
  • 遍历过程: 在每次循环中,比较s和t当前字符:
    • 如果字符匹配,s的指针前进。
    • 不论是否匹配,t的指针总是前进。
  • 结束条件: 当s的指针遍历完s或t的指针遍历完t时,终止循环。
  • 判断结果: 检查s的指针是否到达末尾,若到达则s是t的子序列。
  • 代码实现:

    public class Solution {    public boolean isSubsequence(String s, String t) {        int lenS = s.length();        int lenT = t.length();        if (lenS > lenT) {            return false;        }        int i = 0, j = 0;        while (i < lenS && j < lenT) {            if (s.charAt(i) == t.charAt(j)) {                i++;            }            j++;        }        return i >= lenS;    }}

    代码解释:

    • 长度检查: 如果s的长度大于t的长度,直接返回false,因为s不可能是t的子序列。
    • 双指针初始化: i遍历s,j遍历t。
    • 循环过程: 比较当前字符,匹配则移动s的指针,总是移动t的指针。
    • 结果判断: 返回s的指针是否到达末尾,标记是否为子序列。

    这种方法高效且简洁,能够在O(n)时间复杂度内解决问题,适用于处理长字符串。

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

    你可能感兴趣的文章
    POJ 题目3020 Antenna Placement(二分图)
    查看>>
    Poj(1797) Dijkstra对松弛条件的变形
    查看>>
    SpringBoot为什么不需要xml配置文件?
    查看>>
    POJ--2391--Ombrophobic Bovines【分割点+Floyd+Dinic优化+二分法答案】最大网络流量
    查看>>
    Qt笔记——SQLite初探QSqlDatabase QSqlQuery
    查看>>
    POJ-1163-The Triangle
    查看>>
    POJ-Fence Repair 哈夫曼树
    查看>>
    poj1061 - 同余方程,二元一次不定方程
    查看>>
    Qt笔记——SQLite再探
    查看>>
    poj1068Parencodings
    查看>>
    poj1182(带权并查集)
    查看>>
    POJ1182(带权并查集)
    查看>>
    Qt笔记——Qt初探、PyQt5和Qt5
    查看>>
    poj1190生日蛋糕
    查看>>
    POJ1218 HDU1337 ZOJ1350 UVALive2557 THE DRUNK JAILER
    查看>>
    poj1222 EXTENDED LIGHTS OUT(gauss)
    查看>>
    POJ1240 m叉树
    查看>>
    Poj1328--Radar Installation(区间选点)
    查看>>
    POJ1384Piggy-Bank(DP)
    查看>>
    POJ1417 True Liars —— 并查集 + DP
    查看>>