-
java二道面试题5
2个问题
1.有一个邮箱,有一千万条黑名单用户,怎么判断收件箱是不是黑名单用户。
据说和字典什么的是属于同一个经典问题。。
2.求一个字符串中最长的颠倒字符串。。
比如 a123ghfuhg321asd131.(就是a123,321a.)2014年8月21日 13:34
5个答案 按时间排序 按投票排序
-
采纳的答案
1.有一个邮箱,有一千万条黑名单用户,怎么判断收件箱是不是黑名单用户。
据说和字典什么的是属于同一个经典问题。。
这个肯定是用布隆过滤算法,楼主可以网上去找找算法. 用map的瓶颈就是内存.
优点:对比用MAP来存储,内存需要量急剧减少.检索速度超快.
缺点:会有一定的误判,会把不是黑名单的判断成黑名单.但是不会漏判断.
2.求一个字符串中最长的颠倒字符串。。
比如 a123ghfuhg321asd131.(就是a123,321a.)
这个问题不是几句话能搞明白,楼主可以看看这个博客.里面有大量的算法分析.
http://blog.csdn.net/v_july_v
http://blog.csdn.net/v_july_v/article/details/70418272014年8月22日 08:50
-
public class Test { /** * @param args */ public static void main(String[] args) { String a = "jha123ghfs343uhg321asd131"; String str1 = null, str2 = null, tmpstr1 = null, tmpstr2 = null, maxstr1 = null, maxstr2 = null; for (int i = 0; i < a.length() - 2; i++) { for (int j = 2 + i; j < a.length() - 1; j++) { if (j > i) { str1 = a.substring(i, j); if (str1 != null && !str1.equals("") && str1.length() > 1) { str2 = (new StringBuilder(str1)).reverse().toString(); if (a.indexOf(str2) == -1) { if (tmpstr1 != null && (maxstr1 == null || tmpstr1.length() > maxstr1.length())) { maxstr1 = tmpstr1; maxstr2 = tmpstr2; } break; } else { tmpstr1 = str1; tmpstr2 = str2; } } } } } System.out.println("字符串中最长的颠倒字符串:"+maxstr1 + "," + maxstr2); } }
运行输出,字符串中最长的颠倒字符串:a123gh,hg321a2014年8月23日 22:26
-
第二道题code
package com.test1;
/**
* 最大长颠倒字符串 它的长度应该小于等于整个字符串(长度为L)的的一半
* 从假设最大颠倒长度为整个的1/2L 然后查这个长度的颠倒字符串是否存在 存在就返回,不存在,则继续往下找1/2L-1,以此类推1/2L-1....一直到0。如果为0说明没有
*
*/
public class ResStrLong {
public static void main(String[] args) {
String string="a123ghfuhg321asd131";
String revString=getLongString(string);
}
public static String getLongString(String string)
{ int maxStr=string.length()/2;
int len=string.length();
String revString=null;
boolean flag=false;
for(int i=maxStr;i>=0;i--){
for (int j = 0; j <len; j++) {
if((j+i+1)>(len-1))continue;
String subString=string.substring(j,j+i+1);
revString=new StringBuffer(subString).reverse().toString();
int flag1=string.indexOf(revString);
if(flag1!=-1){flag=true;System.out.println(subString+":"+revString+";"+i);break;}
}
if(flag)break;
}
return revString;
}
}2014年8月21日 22:01
-
第一个问题应该是考,怎么存这一千万条数据,使判断是不是黑名单用户的耗时最少。
这也是分词器字典需要使用的数据结构。之前看IK分词的词典是使用树结构存储的;父节点使用hashmap存储子节点对象;每个节点的值是一个char。
http://blog.csdn.net/guwenwu285/article/details/9617057
第二个http://blog.csdn.net/hopeztm/article/details/7932245的思路二的方法:package snippet; public class Solution { private static int[] next; private static void GetNext(String s)// KMP求next数组 { int i, j; i = 0; j = -1; next[0] = -1; while (i < s.length()) { if (j == -1 || s.charAt(i) == s.charAt(j)) { i++; j++; next[i] = j; } else { j = next[j]; } } } private static int compare(String pattern, String s) // 用KMP算法做求出最长的前缀匹配 { int i, j; i = 0; j = 0; int maxLen = 0; while (i < s.length()) { if (j == -1 || pattern.charAt(j) == s.charAt(i)) { i++; j++; } else { j = next[j]; } if (j > maxLen) { maxLen = j; } if (j == pattern.length()) { return maxLen; } } return maxLen; } public static String longestPalindrome(String s) // { // Start typing your Java solution below // DO NOT write main() function String reverString = new StringBuilder(s).reverse().toString(); // 求得到 // 输入string // 的reverse next = new int[s.length() + 1]; String maxPal = ""; int maxLen = 0; int len; for (int i = 0; i < s.length(); i++) // 枚举所有后缀 { String suffix = reverString.substring(i); if (suffix.length() < maxLen) { break; } GetNext(suffix); len = compare(suffix, s); if (len > maxLen) { maxPal = suffix.substring(0, len); maxLen = len; } } return maxPal; } public static void main(String[] args) { System.out.println(longestPalindrome("a123ghfuhg321asd131")); System.out.println(longestPalindrome("a123ghuhg321asd131")); } }
2014年8月21日 15:15
相关推荐
4. **诗题取士**:宋徽宗的“诗题取士”考试方式,要求考生根据古诗句创作画作,考察画家对诗词意境的理解和创新能力。 5. **考题解析**: - **踏花归去马蹄香**:此题考察的是抽象概念的具象表达,最终录取的画作...
标题中的“台塑电子工安二道门禁.zip”表明这是一个关于台塑电子在宁波工厂的二次门禁系统的综合资料压缩包。台塑集团作为知名的电子产品制造商,对于工安(工业安全)的要求非常高,尤其是门禁系统,是保障生产安全...
问题描述: 假设有一个能装入总体积为T的背包和n件体积分别为w1 , w2 , … , wn 的物品,能否从n件物品中挑选若干件恰好装满背包,即使w1 +w2 + … + wn=T,要求找出所有满足上述条件的解。例如:当T=10,各件物品的...
每周练习至少二道算法题,每天进步一点点。 一直觉得自己的算法很弱,已经成为自己职业发展的瓶颈,终于下决心决定养成个每周至少两道算法题的习惯,本仓库作为刷题的记录,希望能够帮助到那些也喜欢学习算法的童鞋...
吉林省长春市二道区 八年级物理上学期期末试题.doc
很抱歉,但根据提供的信息,这似乎是一份关于2015年吉林省长春市二道区九年级(相当于中国的初中三年级)化学质量监测一模考试的试题文档。由于这是一个具体的教育资料标题和描述,通常包括一系列针对学生评估的知识...
这份文档是关于吉林省长春市二道区2019-2020学年八年级物理上学期期末考试试题的试卷。试卷分为选择题和非选择题两大部分,涵盖了一系列物理概念和现象。 1. 声音特性:在第一题中,提到“高声喧哗”的“高”是指...
吉林省长春市二道区2020-2021学年八年级上学期期末数学试题(解析版).doc
吉林省长春市二道区2020-2021学年七年级下学期期末考试生物试题(word版).docx
这份文档是吉林省长春市二道区高二数学上学期期末考试的试题,主要涉及的知识点包括复数的几何意义、命题的否定、概率计算、充分条件与必要条件、算法的理解、统计学中的茎叶图、线性回归分析、频率分布直方图、分层...
在网络游戏领域,"游戏床的底盘二道锁"可能是一个特定的设计或机制,它涉及到游戏中的安全性、用户体验以及游戏逻辑。这个概念可能来源于某种网络游戏,其中的“游戏床”可能是玩家角色的休息区域,或者是一个重要的...
这份资料是针对高一学生的数学期末考试试题,涵盖了多项选择题、填空题以及解答题。以下是基于试题内容解析的一些重要知识点: 1. **集合论基础**:题目中出现了集合交集的概念,如AB∩表示集合A和集合B的交集,这...
银行二道门门禁系统是一种高级安全解决方案,主要用于防止未经授权的人员进入敏感区域,如银行的现金处理区。系统的核心功能在于确保两道门之间的互锁机制,防止跟随进入,以增强安全防护。 1. **互锁功能**:系统...
在探讨天津市海河二道闸自动化观测系统改造设计时,首先需要明确自动化观测系统的必要性。由于传统的水闸观测工作多依赖人工操作,这不仅使得工作强度大,而且数据准确性受多种外界因素影响,如天气和观测者技能等,...
银行二道门门禁系统的介绍.doc
二道小学小学生一日常规活动方案.doc
这份资料是针对初中三年级物理的一份上学期期末考试试题,包含了解析,主要涉及分子运动、电路知识、能量转换、安全用电原则等多个物理概念。以下是这些知识点的详细说明: 1. **分子运动理论**:题目1通过荷花飘香...
本文旨在详细介绍二道小学为提升学生的健康水平而制定的最新营养早餐实施计划方案。 二道小学营养早餐计划是在国家教育改革和农村义务教育学生营养改善计划的政策指导下制定的。该计划的首要任务是改善学生的早餐...
【二道河农场庆六一活动总结】 本次活动总结聚焦于二道河农场在六一国际儿童节期间举办的多项庆祝活动,旨在关爱未成年人的成长,加强权益保护,并通过一系列丰富多彩的活动,提升孩子们的身心健康和道德教育。 一...
《二道贩子-需求规格说明书》是一份详尽阐述软件开发需求的文档,由计算机与大数据学院的“二道贩子”小组在指导老师林啟锋的带领下完成。该文档的编写目的是为软件开发的各个角色,包括产品经理、设计师、程序员、...