字符串序列判定

简介: 字符串序列判定

题目描述

输入两个字符串 S 和 L,都只包含英文小写字母。S 长度<=100,L 长度<=500,000

判定 S 是否是 L 的有效子串。

判定规则:

S 中的每个字符在 L 中都能找到(可以不连续),且 S 在L中字符的前后顺序与 S 中顺序要保持一致。

(例如,S=”ace”是 L=”abcde”的一个子序列且有效字符是 a、c、e,而”aec”不是有效子序列,且有效字符只有 a、e)

输入描述

输入两个字符串 S 和 L,都只包含英文小写字母。S 长度<=100,L 长度<=500,000

先输入 S,再输入 L,每个字符串占一行。

输出描述

S 串最后一个有效字符在 L 中的位置。(首位从 0 开始计算,无有效字符返回-1)

示例一

输入输出示例仅供调试,后台判题数据一般不包含示例

输入

ace
abcde

输出

4

示例二

输入输出示例仅供调试,后台判题数据一般不包含示例

输入

fgh
abcde

输出

-1

代码

#include <stdio.h>
#include <string.h>

int main() {
    char s[100];
    char l[50000];

    // 输入字符串 S
    scanf("%99s", s);

    // 输入字符串 L
    scanf("%49999s", l);
    
    // 比较字符串 S 和 L 中的字符
    int i = 0, j = 0;
    while(i<strlen(s) && j<strlen(l)){
        if(s[i]==l[j]){
            i++;
        }
        j++;
    }
    
    // 判断是否找到字符串 S 在 L 中的位置
    if(i==strlen(s)){
        printf("%d\n",j-1);
    }
    else{
        printf("-1\n");
    }
    return 0;
}
相关文章
|
3月前
|
存储 算法 索引
|
3月前
|
存储 Java 数据处理
|
4月前
去除数组中重复的那个数字
去除数组中重复的那个数字
|
6月前
|
算法 测试技术 编译器
【算法 | 实验18】在字符矩阵中查找给定字符串的所有匹配项
题目描述 题目 在字符矩阵中查找给定字符串的所有匹配项 给定一个M×N字符矩阵,以及一个字符串S,找到在矩阵中所有可能的连续字符组成的S的次数。所谓的连续字符,是指一个字符可以和位于其上下左右,左上左下,右上右下8个方向的字符组成字符串。用回溯法求解。
96 1
|
6月前
|
人工智能 自然语言处理 算法
【动态规划】【字符串】【前缀和】1639通过给定词典构造目标字符串的方案数
【动态规划】【字符串】【前缀和】1639通过给定词典构造目标字符串的方案数
|
6月前
|
存储
leetcode2744. 最大字符串配对数目
leetcode2744. 最大字符串配对数目
32 0
​判断给定字符序列是否是回文
​判断给定字符序列是否是回文
76 0
|
算法
给定m个不重复的字符 [a,b,c,d],以及一个长度为n的字符串tbcacbdata滑动窗口
给定m个不重复的字符 [a,b,c,d],以及一个长度为n的字符串tbcacbdata滑动窗口
235 0
|
机器学习/深度学习 Python
字符串和数字的去重操作和鞍点的寻找
字符串和数字的去重操作和鞍点的寻找
字符串和数字的去重操作和鞍点的寻找
|
人工智能 算法 JavaScript
最长连续不重复的序列
最长连续不重复的序列