文本嗅探 字符串的题
来源:互联网 发布:linux文件分区 编辑:程序博客网 时间:2024/04/29 06:55
文本嗅探
- 热度指数:670时间限制:3秒空间限制:32768K
- 算法知识视频讲解
题目描述
现在有一个字符串列表,和一个关键词列表,请设计一个高效算法,检测出含关键字列表中关键字(一个或多个)的字符串。
给定字符串数组A及它的大小n以及关键词数组key及它的大小m,请返回一个排好序的含关键词的字符串序号的列表。保证所有字符串长度小于等于100,关键词个数小于等于100,字符串个数小于等于200。保证所有字符串全部由小写英文字符组成。若不存在含关键字的字符串,请返回一个只含-1的数组。
测试样例:
["nowcoder","hello","now"],3,["coder",now],2
返回:[0,2]
import java.util.*;public class KeywordDetect { public int[] containKeyword(String[] A, int n, String[] keys, int m) { int[] cnt = new int[n]; for(int i=0;i<n;i++){ StringBuffer sb = new StringBuffer(A[i]); for(int j=0;j<m;j++){ StringBuffer tmp = new StringBuffer(sb); while(tmp.indexOf(keys[j])!=-1){ StringBuffer temp=new StringBuffer(tmp.substring(tmp.indexOf(keys[j])+keys[j].length())); cnt[i]++; tmp=temp; } } } int [] tempa = cnt; //Arrays.sort(cnt); int num=0; for(int i=0;i<n;i++){ if(cnt[i]!=0){ num++; } } if(num==0){ int[] ret0= new int[1]; ret0[0]=-1; return ret0; } int[] ret = new int[num]; int k=0; for(int i=0;i<n;i++){ if(cnt[i]!=0){ ret[k++]=i; } } return ret; }}
别人的答案:
import java.util.*; public class KeywordDetect { public static int[] containKeyword(String[] A, int n, String[] keys, int m) { StringBuffer sb = new StringBuffer(); for(int i=0;i<A.length;i++){ for(int j=0;j<keys.length;j++){ if(A[i].indexOf(keys[j]) != -1){ sb.append(i).append(","); break; } } } if(sb.toString().equals("")){ int[] s = {-1}; return s; }else{ String[] strings = sb.toString().split(","); int[] result = new int[strings.length]; for(int i=0;i<result.length;i++){ result[i] = Integer.parseInt(strings[i]); } return result; } }}
import java.util.*; public class KeywordDetect { public int[] containKeyword(String[] A, int n, String[] keys, int m) { // write code here TreeSet<Integer> set = new TreeSet<>(); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (A[i].contains(keys[j])) { set.add(i); break; } } } if (set.isEmpty()) { int[] a = {-1}; return a; } int[] a = new int[set.size()]; int i = 0; for (int pos : set) { a[i++] = pos; } return a; }}
C++:
class KeywordDetect {public: vector<int> containKeyword(vector<string> A, int n, vector<string> keys, int m) { vector<int> vec; for(int i=0;i<n;i++) for(int j=0;j<m;j++) if(A[i].find(keys[j])!=string::npos){ vec.push_back(i); break; } if(vec.empty()) vec.push_back(-1); return vec; }};
0 0
- 文本嗅探 字符串的题
- 获取文本字符串的长度
- java文本的字符串替换
- 文本域中字符串包含回车的处理
- C++实现的文本字符串替换功能
- cocos2d-android-1文本字符串的换行
- 猜测文本/字符串编码的方式
- 属性字符串(富文本)的使用
- 富文本带属性的字符串NSMutableAttributedString
- 对于文本与字符串之间的区别?
- [编程题] 文本嗅探
- 新浪笔试题之删除文本中词频最小的所有字符串
- 字符串写入文本&文本中搜寻字符串
- 文本字符串替换
- 富文本(属性字符串)
- Unicode字符串写入文本
- 文本文档提取字符串
- CATextLayer绘制文本字符串
- 学习方法论---知其所以然(以算法学习为例)
- 04-树5 Root of AVL Tree (25分)
- 1613-3-傅溥衍 第一天总结
- 【APIO2010】bzoj1911 特别行动队
- 从今天开始,决定又开始学习后台
- 文本嗅探 字符串的题
- Shiro基础知识02----shiro身份验证(HelloWorld,Subject,Reaml(自定义reaml)),Authenticator及AuthenticationStrategy
- xml基础知识
- C# Windows-API-Code-Pack for .Net
- Ajax-XMLHttpRequest2
- Android热修复(Hot Fix)案例全剖析(一)
- dug使用方法
- 针对请求GET和POST请求,出现中文乱码
- 让SecureCRT好使起来