给定两个字符串str1和str2,
str1进行排列组合只要有一个为str2的子串则认为str1是str2的关联子串,
请返回子串在str2的起始位置,若不是关联子串则返回-1。
qwe dsgfasgfwe
-1
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机试2023(Java)
本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。