华为OD机试(Java),关联子串

华为OD机试(Java),关联子串_第1张图片

一、题目描述

给定两个字符串str1和str2,

str1进行排列组合只要有一个为str2的子串则认为str1是str2的关联子串,

请返回子串在str2的起始位置,若不是关联子串则返回-1。

二、输入描述

qwe dsgfasgfwe

三、输出描述

-1

四、Java算法源码

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] arr = sc.nextLine().split(" ");

        String str1 = arr[0];
        String str2 = arr[1];
        int a = str1.length();
        int b = str2.length();
        int index = -1;

        for (int i = 0; i <= b - a; i++) {
            if (check(str1, str2.substring(i, i + a))) {
                index = i;
                break;
            }
        }
        System.out.println(index);
    }

    public static boolean check(String a, String b) {
        int count = 0;
        int l = a.length();
        List<Character> list = new ArrayList<>();
        for (int i = 0; i < l; i++) {
            list.add(b.charAt(i));
        }

        for (int i = 0; i < l; i++) {
            for (int j = 0; j < list.size(); j++) {
                if (a.charAt(i) == list.get(j)) {
                    list.remove(j);
                    count++;
                    break;
                }
            }
        }
        return count == l;
    }

五、效果展示

华为OD机试(Java),关联子串_第2张图片

华为OD机试(Java),关联子串_第3张图片


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

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

华为OD机试(Java),关联子串_第4张图片

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