论坛首页 综合技术论坛

阿里实习一道题目:

浏览 14470 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
作者 正文
   发表时间:2011-06-10  
给定一段产品的英文表述,包含M个英文单词,每个英文单词以空格分隔,无其他标志符号;再给定N个英文关键字,请说明思路并编程实现String extractSummary(String description,String【】keyword):目标是找出产品描述中包含N个关键字(每个关键字至少出现一次)的长度最短的子串
   发表时间:2011-06-11  
编程之美上的最短摘要问题
0 请登录后投票
   发表时间:2011-06-12  
谢谢!!1
0 请登录后投票
   发表时间:2011-06-17  
喜羊羊与灰太狼 写道
编程之美上的最短摘要问题

好淡定的表达,完全不屑阿里!
0 请登录后投票
   发表时间:2011-06-18  
http://lisie.hdu.edu.cn/passionke/2011/06/10/df-2/

这个问题我用python做了
0 请登录后投票
   发表时间:2011-06-18  
下面的代码试下看能满足要求不?
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 "";
}
}
}
0 请登录后投票
   发表时间:2011-06-18  
这个题目不是阿里的原创 我早做过了...是一个递归的题目...
从第一个字符开始 按照Key 递归计算就可以了..
0 请登录后投票
   发表时间:2011-06-19  
//给定一段产品的英文表述,包含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));

	}

}
0 请登录后投票
   发表时间:2011-06-19  
抄题,唉。
0 请登录后投票
   发表时间:2011-06-20  
用正则可以否
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics