您的位置:首页 > 编程语言 > Java开发

华为机试---文本嗅探

2016-06-25 11:30 501 查看


题目描述

现在有一个字符串列表,和一个关键词列表,请设计一个高效算法,检测出含关键字列表中关键字(一个或多个)的字符串。
给定字符串数组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 华为