论坛首页 综合技术论坛

阿里实习一道题目:

浏览 14471 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
作者 正文
   发表时间:2011-06-20  
的确不是原创,我在笔试的时候也做过这个题目
0 请登录后投票
   发表时间: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)
     


0 请登录后投票
   发表时间: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)
0 请登录后投票
   发表时间: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
0 请登录后投票
   发表时间:2011-06-21  
怎算还没搞清楚,做过的人提供思路啊
0 请登录后投票
   发表时间: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。
0 请登录后投票
   发表时间:2011-06-21  
chinadeng 写道
怎算还没搞清楚,做过的人提供思路啊

蜡烛两边烧
0 请登录后投票
   发表时间:2011-06-21  
汇编可否?
0 请登录后投票
   发表时间:2011-06-25  
喜羊羊与灰太狼 写道
编程之美上的最短摘要问题

回去马上看
0 请登录后投票
   发表时间: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]

0 请登录后投票
论坛首页 综合技术版

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