华为机试真题--字符串序列判定

题目描述:

输入两个字符串S和L,都只包含英文小写字母,其中S长度<=100,L长度<=500000,请判定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)

示例1:

输入

ace

abcde

输出

4

示例2:

输入

fgh

abcde

输出

-1

C++源码:

cpp 复制代码
#include <iostream>
#include <string>
using namespace std;

int main() {
    string S, L;
    cin >> S >> L;
    int index = -1;
    for (int i = 0, j = 0; i < S.size() && j < L.size(); ++j) {
        if (S[i] == L[j]) {
            index = j;
            ++i;
        }
    }
    cout << (index != -1 ? index : -1) << endl;
    system("pause");
    return 0;
}
相关推荐
john_hjy8 分钟前
标量、向量、矩阵、张量
算法·机器学习·矩阵
+++.9 分钟前
c++雪花屏(vsCode+cmake+mingw+ninja)
开发语言·c++·vscode
qq_4308558812 分钟前
线代第一章行列式第八课:克莱姆法则(Cramer法则)
线性代数·算法·矩阵
小妖66614 分钟前
力扣(LeetCode)- 542. 01 矩阵
算法·leetcode·矩阵
小年糕是糕手14 分钟前
【C++】内存管理(下)
java·c语言·开发语言·数据结构·c++·算法
一叶之秋141215 分钟前
深入剖析vector的底层实现原理
c++
CoderYanger16 分钟前
第 479 场周赛Q2——3770. 可表示为连续质数和的最大质数
java·数据结构·算法·leetcode·职场和发展
艾莉丝努力练剑18 分钟前
【Linux基础开发工具 (六)】Linux中的第一个系统程序——进度条Linux:详解回车、换行与缓冲区
java·linux·运维·服务器·c++·centos
ZouZou老师20 分钟前
C++设计模式之单例模式:以小区快递柜为例
c++·单例模式·设计模式
像风一样自由202020 分钟前
U-Net 图像分割算法:从零开始的完全指南
算法