华为机试---文本嗅探



题目描述

现在有一个字符串列表,和一个关键词列表,请设计一个高效算法,检测出含关键字列表中关键字(一个或多个)的字符串。

给定字符串数组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;
 }
 
}

你可能感兴趣的:(java,华为)