華為機試---テキスト嗅ぎ
タイトルの説明
文字列リストとキーワードリストがあります.キーワードリストのキーワード(1つ以上)を含む文字列を検出する効率的なアルゴリズムを設計してください.
文字列配列Aおよびそのサイズnおよびキーワード配列keyおよびそのサイズmを指定し、キーワードを含む文字列番号のリストを並べて返します.すべての文字列の長さが100以下、キーワードの個数が100以下、文字列の個数が200以下であることを保証します.すべての文字列が小文字の英語文字で構成されていることを保証します.キーワードを含む文字列が存在しない場合は、-1のみの配列を返します.
テストサンプル:
タイトルの説明
文字列リストとキーワードリストがあります.キーワードリストのキーワード(1つ以上)を含む文字列を検出する効率的なアルゴリズムを設計してください.
文字列配列Aおよびそのサイズnおよびキーワード配列keyおよびそのサイズmを指定し、キーワードを含む文字列番号のリストを並べて返します.すべての文字列の長さが100以下、キーワードの個数が100以下、文字列の個数が200以下であることを保証します.すべての文字列が小文字の英語文字で構成されていることを保証します.キーワードを含む文字列が存在しない場合は、-1のみの配列を返します.
テストサンプル:
["nowcoder","hello","now"],3,["coder",now],2
:[0,2]
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args){
String[] A = {"nowcoder" , "hello" , "now"};
int n = 3;
String[] keys = {"coder" , "now"};
int m = 2;
System.out.println(containKeyword(A , n , keys , m));
}
private static int[] containKeyword(String[] A, int n, String[] keys, int m) {
List<Integer> list = new ArrayList<Integer>();
for(int i = 0 ; i < n ; i++){
int count = 0;
while(count < m){
if(A[i].indexOf(keys[count]) != -1){
break;
}else{
count++;
}
}
if(count < m) list.add(i);
}
if(list.size() == 0){
list.add(-1);
}
int[] index_list = new int[list.size()];
int index = 0;
for(Integer temp_data : list){
index_list[index++] = temp_data;
}
return index_list;
}
}