列表

详情


NC228. 判断子序列

描述

给定两个字符串 S 和 T ,判断 S 是否是 T 的子序列。
即是否可以从 T 删除一些字符转换成 S。

数据范围: ,保证字符串中仅含有小写字母

示例1

输入:

"nowcoder","nowcoder"

输出:

true

示例2

输入:

"nower","nowcoder"

输出:

true

示例3

输入:

"nowef","nowcoder"

输出:

false

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 3ms, 内存消耗: 384KB, 提交时间: 2022-01-06

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param S string字符串 
     * @param T string字符串 
     * @return bool布尔型
     */
    bool isSubsequence(string S, string T) {
        // write code here
        int i = 0, j = 0;
        while(i < S.length() && j < T.length()) {
            if(T[j++] == S[i]) ++i;
        }
        return i == S.length();
    }
};

C++ 解法, 执行用时: 3ms, 内存消耗: 388KB, 提交时间: 2022-03-03

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param S string字符串 
     * @param T string字符串 
     * @return bool布尔型
     */
    bool isSubsequence(string S, string T) {
        int Num1 = 0;
        int Num2 = 0;
        int Sign = 0;
        int Num3 = 0;
        if (T.size() < S.size()){
            return false;
        }
        for (Num1 = 0 ; Num1 < S.size() ; Num1++){
            for(Num2 = Sign ; Num2 < T.size() ; Num2++){
                if (S[Num1] == T[Num2]){
                    Sign = Num2+1;
                    Num3 = Num3 + 1;
                    break;
                }
            }
        }
        if (S.size() == Num3){
            return true;
        } else {
            return false;
        }
    }
}; 

C++ 解法, 执行用时: 3ms, 内存消耗: 388KB, 提交时间: 2021-12-04

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param S string字符串 
     * @param T string字符串 
     * @return bool布尔型
     */
    bool isSubsequence(string s, string t) {
        // write code here
        int i = 0, j = 0;
        int n = s.size(), m = t.size();
        if(t.size() < s.size()) return false;
        while(i < n && j < m){
            if(s[i] == t[j]) i++, j++;
            else j++;
        }
        return i == s.size();
    }
};

C++ 解法, 执行用时: 3ms, 内存消耗: 392KB, 提交时间: 2022-07-22

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param S string字符串 
     * @param T string字符串 
     * @return bool布尔型
     */
    bool isSubsequence(string s, string t) {
        // write code here
        int sl = s.size();
        int tl = t.size();
        
        int i =0;
        int k = 0;
        while(i<sl && k< tl )
        {
            if(s[i] == t[k])
            {
                i++;
                k++;
            }
            else
            {
                k++;
            }
        }
        return i == sl;
    }
};

C++ 解法, 执行用时: 3ms, 内存消耗: 392KB, 提交时间: 2022-06-22

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param S string字符串 
     * @param T string字符串 
     * @return bool布尔型
     */
    bool isSubsequence(string S, string T) {
        // write code here
        for(int i=0,j=0;i<T.length();i++)
        {
            if(T[i]==S[j])
            {
                j++;
            }
            if(j==S.length()) return true;
        }
        return false;
    }
};

上一题