华为OD机试真题 Java 实现【寻找相同子串】【2023 B卷 100分】,附详细解题思路-LMLPHP

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

华为OD机试真题 Java 实现【寻找相同子串】【2023 B卷 100分】,附详细解题思路-LMLPHP

一、题目描述

给你两个字符串t和p,要求从t中找到一个相同的连续子串,并输出该子串第一个字符的下标。

二、输入描述

输入文件包括两行,分别表示字符串t和p,保证t的长度不小于p,且t的长度不超过1000000,p的长度不超过10000。

三、输出描述

如果能从t中找到一个和p相等的连续子串,则输出该子串第一个字符在t中的下标(下标从左向右依次是1,2,3);

如果不能则输出“No”;

如果含有多个这样的子串,则输出第一个字符下标最小的那个;

示例1:

输入:

AVERDXIVYERDIAN

RDXI

输出:

4

四、解题思路

白给的,没思路。

五、Java算法源码

package com.guor.od;

import java.util.*;

public class OdTest {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 如果能从t中找到一个和p相等的连续子串,则输出该子串第一个字符在t中的下标
        String t = sc.nextLine();
        String p = sc.nextLine();
        if (t.length() < p.length()) {
            System.out.println("No");
        }

        int idx = t.indexOf(p);
        if (idx == -1) {
            System.out.println("No");
        } else {
            System.out.println(idx + 1);
        }
    }
}

六、效果展示

1、输入

nezhastudyjavastudy
study

2、输出

6

3、说明

如果能从t中找到一个和p相等的连续子串,则输出该子串第一个字符在t中的下标。

在nezhastudyjavastudy字符串中第一个study出现的位置是6。

华为OD机试真题 Java 实现【寻找相同子串】【2023 B卷 100分】,附详细解题思路-LMLPHP


🏆下一篇:华为OD机试真题 Java 实现【路灯照明问题】【2022Q4 100分】,感谢fly晨发现这个问题,并提供更优质的算法

🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

华为OD机试真题 Java 实现【寻找相同子串】【2023 B卷 100分】,附详细解题思路-LMLPHP

08-13 09:29