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

本文共 857 字,大约阅读时间需要 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/

    你可能感兴趣的文章
    noip借教室 题解
    查看>>
    NOIP模拟测试19
    查看>>
    NOIp模拟赛二十九
    查看>>
    Vue3+element plus+sortablejs实现table列表拖拽
    查看>>
    Nokia5233手机和我装的几个symbian V5手机软件
    查看>>
    non linear processor
    查看>>
    Non-final field ‘code‘ in enum StateEnum‘
    查看>>