Я делаю хакерранкский средний вызов для взломщика паролей.Я хочу иметь возможность проверить, содержит ли данная строка attempt
все слова в pass
.pass
- это массив паролей, а attempt
- это конкатенация случайных записей в pass
.Если attempt
содержит ТОЛЬКО слова, которые найдены как записи в pass
, то это считается хорошим паролем, и слова из ввода attempt
, ограниченные пробелами, печатаются.
Пример ввода
3 //3 attempts
6 //6 words for attempt 1
because can do must we what //pass[]
wedowhatwemustbecausewecan //attempt
2 //...
hello planet
helloworld
3
ab abcd cd
abcd
Ожидаемый результат
we do what we must because we can
WRONG PASSWORD //Because planet is not in pass[]
ab cd
Код
public class Solution {
static String passwordCracker(String[] pass, String attempt) {
int arrayLength=pass.length;
int accuracy=0;
String trips_array[] = new String[pass.length];
String [] newWord = new String[20];
for (int i=0; i<pass.length;i++)
{
// int j=0;
String[] arr = pass[i].split(" ");
//-------------------------------
if (attempt.contains(pass[i]))
{
accuracy++;
newWord[i] = pass[i];
trips_array[i] = attempt.split(" ");
}
//------------------------------
}
StringBuilder sb = new StringBuilder();
for (String words : trips_array) {
sb.append(words);
}
for (int i=0; i<pass.length;i++)
{
if (accuracy==pass.length)
return sb.toString() + " ";
else
return "WRONG PASSWORD";
}
return "test";
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int t = in.nextInt();
for(int a0 = 0; a0 < t; a0++){
int n = in.nextInt();
String[] pass = new String[n];
for(int pass_i = 0; pass_i < n; pass_i++){
pass[pass_i] = in.next();
}
String attempt = in.next();
String result = passwordCracker(pass, attempt);
System.out.println(result);
}
in.close();
}
}
Частьв центре внимания находится часть в разделе комментариев // -----------------.По сути, моя цель - выяснить, содержит ли попытка правильные записи в pass
, и если да, сохранить эту подстроку attempt
(или аналогично записи в pass
) в новый массив, который можно распечататьв правильном порядке.Если вы проверите ожидаемый результат выше, вы увидите, что он такой же, как attempt
, за исключением пробелов .
По сути, мне нужно найти разрывы в словах attempt
и напечатать, что, если оно удовлетворяет вышеуказанным требованиям (первый абзац).
См. Это для получения более подробной информации https://www.hackerrank.com/challenges/password-cracker/problem