【编程题目 |100分】字符串序列判定【2021 H1,H2, 2022 Q1 考试题 2024 Q1考试题 C


时间限制:C/C++ 1秒,其他语言 2秒

空间限制:C/C++262144K,其他语言524288K

64bit IO Format:%lld


本题可使用本地IDE编码,不能使用本地已有代码,无跳出限制,

编码后请点击”保存并调试“按钮进行代码提交。


题目描述

【字符串序列判定】

输入两个字符串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

代码实现


Golang


Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
package main
import (
"fmt"
"sort"
"strconv"
)
package main import ( "fmt" "sort" "strconv" )
package main

import (
    "fmt"
    "sort"
    "strconv"
)

剩余50%内容,购买单篇文章或订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看


C++解法一


Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include <bits/stdc++.h>
using namespace std;
int find(string S, string L)
{
int lastIndex = -1;
for (char i : S) {
#include <bits/stdc++.h> using namespace std; int find(string S, string L) { int lastIndex = -1; for (char i : S) {
#include <bits/stdc++.h>

using namespace std;

int find(string S, string L)
{
    int lastIndex = -1;
    for (char i : S) {

剩余50%内容,购买单篇文章或订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

C++解法二


Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include<bits/stdc++.h>
using namespace std;
#include<bits/stdc++.h> using namespace std;
#include<bits/stdc++.h>

using namespace std;

剩余50%内容,购买单篇文章或订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

JAVA


剩余50%内容,购买单篇文章或订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

Python解法一


剩余50%内容,购买单篇文章或订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

Python解法二


Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
if __name__ == "__main__":
target = input()[::-1]
source = input()[::-1]
if __name__ == "__main__": target = input()[::-1] source = input()[::-1]
if __name__ == "__main__":
    target = input()[::-1]
    source = input()[::-1]

剩余50%内容,购买单篇文章或订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看


JavaScript


Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
let S = readline();
let L = readline();
let S = readline(); let L = readline();
let S = readline(); 
let L = readline();

剩余50%内容,购买单篇文章或订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看