java如何解决字符串数组溢出_java解决一个字符串数组过滤的问题,要求效率尽量快....

满意答案

dcebd7a0de6265b6ccae5ead692f1eab.png

正文71地脉

2013.08.28

dcebd7a0de6265b6ccae5ead692f1eab.png

采纳率:53%    等级:12

已帮助:7318人

中文分词应该属于另外一个大范畴,我就没考虑了。

仅仅是尽快滤出之前没有的词,

import java.util.Comparator;

import java.util.TreeSet;

public class Test {

static public int removeOccurances(StringBuilder buf,String word){

int c=0,p,len=word.length();

for(;(p=buf.indexOf(word))!=-1; c++)

buf.delete(p, p+len);

return c;

}

static public void main(String argv[]){

String a[]={"北京","中国朝阳","北京朝阳","天津包子","中国北京",

"北京烤鸭","中国中国","北京中国饭店","北京北京北京",

"北京朝阳饭店","北京朝阳烤鸭饭店","中国北京朝阳饭店"

};

TreeSet set=new TreeSet(new Comparator(){

@Override

public int compare(String o1, String o2) {

int r=o1.length()-o2.length();

return r==0? o1.compareTo(o2):r;

}

});

StringBuilder buf=new StringBuilder();

for(String w:a){

buf.setLength(0); buf.append(w);

for(String dw:set) removeOccurances(buf, dw);

if(buf.length()>0){

w=buf.toString();

for(String dw:set)

if(buf.length()

buf.setLength(0); buf.append(dw);

if(removeOccurances(buf, w)>0){

set.remove(dw); set.add(buf.toString());

}

}

set.add(w);

}

}

System.out.print(set);

}

}

===========

[中国, 北京, 朝阳, 烤鸭, 饭店, 天津包子]

效率应该是O(2W*D), W为数组长度,D为有效词数量

把你的算法拿来看看。应该多说自己

00分享举报

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值