锁定老帖子 主题:阿里实习一道题目:
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2011-06-20
的确不是原创,我在笔试的时候也做过这个题目
|
|
返回顶楼 | |
发表时间:2011-06-20
赵大恩 写道 下面的代码试下看能满足要求不?
import java.util.ArrayList; import java.util.List; import com.sun.java_cup.internal.internal_error; public class test { public static void main(String[] args) { String source="Provides Providesddd Providesthe Providesclasses Provids necessary to create an applet and the classes an applet uses to communicate with its applet context"; String key[]={"Pr","vi","o"}; String srcString=extractSummary(source,key); System.out.println(srcString); } public static String extractSummary(String description,String[]keyword){ String []strTemp=description.split(" "); List <String>strcontainAll=new ArrayList<String>(); int len=1; boolean state=false; //取得符合条件的字串数组 for(String str1:strTemp){ str1= str1.trim(); for(String str2:keyword){ if(!str1.contains(str2)){ state=false; break; } state=true; } if(state){ strcontainAll.add(str1); } } //长度最短的子串 String fhString=""; if(strcontainAll.size()>0){ fhString=strcontainAll.get(0); for(String str3:strcontainAll){ if(fhString.length()>str3.length()){ fhString=str3; } } return fhString; }else { return ""; } } } 这个。。。。。,好长的代码。 def summary(arg,keys): def do(args,keys): sub = '' if args.__contains__(keys): sub = ' '.join(args) do(args[2:],keys) do(args[:-1],keys) else: return sub return do(arg.split(' '),keys) |
|
返回顶楼 | |
发表时间:2011-06-20
def summary(arg,keys):
def do(args,keys): sub = ' '.join(args) if args.__contains__(keys): do(args[2:],keys) do(args[:-1],keys) else: return sub subarg = do(arg.split(' '),keys) if subarg == arg: return '' return do(arg.split(' '),keys) |
|
返回顶楼 | |
发表时间:2011-06-20
shanga 写道 def summary(arg,keys):
def do(args,keys): sub = ' '.join(args) if args.__contains__(keys): do(args[2:],keys) do(args[:-1],keys) else: return sub subarg = do(arg.split(' '),keys) if subarg == arg: return '' return do(arg.split(' '),keys) 改 return subarg |
|
返回顶楼 | |
发表时间:2011-06-21
怎算还没搞清楚,做过的人提供思路啊
|
|
返回顶楼 | |
发表时间:2011-06-21
zengzhaoshuai 写道 //给定一段产品的英文表述,包含M个英文单词,每个英文单词以空格分隔,无其他标志符号; //再给定N个英文关键字,请说明思路并编程实现String extractSummary(String description,String【】keyword): //目标是找出产品描述中包含N个关键字(每个关键字至少出现一次)的长度最短的子串 public class StringTest { /** * @param args */ public static String extractSummary(String description, String[] keyword) { String[] des=description.split(" "); boolean flag=false; int start=0,end=0,count=0; for(int i=0;i<keyword.length;i++){ flag=false; for(int j=0;j<des.length;j++){ if(des[j].equals(keyword[i])){ flag=true; count++; //初始化 if(i==0&&count==1){ start=end=j; } if(start>j){ start=j; } if(end<j){ end=j; } } } if(!flag){ return ""; } } StringBuffer result=new StringBuffer(""); for(int k=start;k<=end;k++){ result.append(des[k]).append(" "); } return result.toString(); } public static void main(String[] args) { // TODO Auto-generated method stub String description=" i love i love you forever "; String keyword[]={"love","forever","i"}; System.out.println(StringTest.extractSummary(description, keyword)); } } 题目的意思是数组中是一组英文单词,而给定的是一组关键字,并非词,所以不能用equals,而需要用contanis。 |
|
返回顶楼 | |
发表时间:2011-06-21
chinadeng 写道 怎算还没搞清楚,做过的人提供思路啊
蜡烛两边烧 |
|
返回顶楼 | |
发表时间:2011-06-21
汇编可否?
|
|
返回顶楼 | |
发表时间:2011-06-25
喜羊羊与灰太狼 写道 编程之美上的最短摘要问题
回去马上看 |
|
返回顶楼 | |
发表时间:2011-06-27
用js写的,欢迎拍砖 写道
function KeysObj(keyWord){
var flag = false; var usedKeyLen=0; var KEYLENGTH; var DEFAULTVAL= false; var UNUSELENGTH = -1; var keyCol = function initKeyCol(keyWord){ var keyCol = Object(); for(var index = 0; index<keyword.length; index++){ keyCol[keyword[index]] = DEFAULTVAL; } KEYLENGTH = keyword.length+1; return keyCol; }(); function setKeyCol(key, site){ if(keyCol[key]==undefined){ return false; } if(!flag&&keyCol[key]==DEFAULTVAL){ usedKeyLen++; if(usedKeyLen==KEYLENGTH){ flag = true; } } keyCol[key] = site; return true; } function hasAllKey(){ return flag; } function getKeyCol(){ return keyCol; } return { setKeyCol: setKeyCol, hasAllKey: hasAllKey, getKeyCol: getKeyCol } } function SummaryObj(keyColUsable, desSummary){ var start = -1; var end = -1; var endword = null; var count; for(var p in keyColUsable){ if(start>keyColUsable[p]||start==-1){ start = keyColUsable[p]; } if(end<keyColUsable[p]||end==-1){ end = keyColUsable[p]; endword = p; } } count = end-start+endword.length; if(desSummary==null||count<desSummary.count){ return { start: start, end : end+endword.length, count: count } }else{ return desSummary; } } function extractSummary(description, keyword){ if((typeof description)!="string"){ alert('Argument[description] is not in right type'); } if(!(keyword instanceof Array)){ alert('Argument[keyword] is not in right type'); } var wordArr = description.split(" "); var keys = KeysObj(keyword); var summary = null; var countDes = null; for(var index = 0, site = 0; index<wordArr.length; index++){ var isKey = keys.setKeyCol(wordArr[index], site ); if(isKey && keys.hasAllKey() ){ summary = SummaryObj(keys.getKeyCol(), summary); } site = site+(wordArr[index].length+1); } if(summary==null){ alert("No Summary Found!"); }else{ alert("Result:["+description.substring(summary.start,summary.end)+"]"); } } var arr = new Array(); var arrSum = new Array(); var description = "yyy fo aa sss fo b sss yyy yyy that yyy sss"; var keyword=['sss', 'yyy', 'fo']; extractSummary(description, keyword); 运行结果:Result:[fo b sss yyy] |
|
返回顶楼 | |