华为OD机试真题(Java),字符串序列判定(100%通过+复盘思路)

在这里插入图片描述

一、题目描述

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

判定a是否是b的有效子串。

判定规则:

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

(例如,a=”qwt”b=”qwerty”的一个子序列且有效字符是q、w、t)。

二、输入描述

输入两个字符串a和b,都只包含英文小写字母。a长度<=100,b长度<=500,000。
先输入a,再输入b,每个字符串占一行。

三、输出描述

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

四、Java算法源码

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    while(sc.hasNextLine()){
        String a=sc.nextLine();
        String b=sc.nextLine();
        System.out.println(get(a,b));
    }
}
private static int get(String a,String b){
    int index=-1;
    for (int i=0;i<a.length();i++){
        boolean flag=false;
        for(int j=index+1;j<b.length();j++){
            if(a.charAt(i)==b.charAt(j)){
                index=j;
                flag=true;
                break;
            }
        }
        if(!flag){
            return index;
        }
    }
    return index;
}

五、效果展示

华为OD机试真题(Java),字符串序列判定(100%通过+复盘思路)_第1张图片

本文收录于,华为OD机试2023(Java)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。

在这里插入图片描述

你可能感兴趣的:(java,算法,华为机试)