Я попытался заполнить хэш-таблицу содержимым одного строкового массива, а затем сопоставить содержимое второго массива, если он все содержится в первом массиве.
, например
дай мне один великий сегодня ночью - Строка A
дай сегодня один великий - Строка B
Моя программа должна вывести Да, так как все содержимое строки B включено в А.
Подробный вопрос здесь: - https://www.hackerrank.com/challenges/ctci-ransom-note/problem
Вот мой код Java: -
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Solution {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int m = in.nextInt();
int n = in.nextInt();
String magazine[] = new String[m];
for(int magazine_i=0; magazine_i < m; magazine_i++){
magazine[magazine_i] = in.next();
}
String ransom[] = new String[n];
for(int ransom_i=0; ransom_i < n; ransom_i++){
ransom[ransom_i] = in.next();
}
Hashtable<Integer,String> hm = new Hashtable<Integer,String>();
for(int magazine_i=0; magazine_i < m; magazine_i++){
hm.put(1,magazine[magazine_i]);
//System.out.println(magazine[magazine_i]);
}
boolean isavailable = false;
for(int ransom_i=0; ransom_i < n; ransom_i++){
isavailable = hm.containsValue(ransom[ransom_i]);
//System.out.println(ransom[ransom_i]+" "+isavailable);
if(isavailable==flase)
{System.out.println("No"); break;}
}
if(isavailable==true)
System.out.println("Yes");
}
}
Вместо этого он дает False, проблема, я думаю, состоит в том, что хэш-таблица не может соответствовать содержимому массива и его значению.