鎺ㄧ炕浜嗙涓鐗堬紝鍙傝冧簡鍏朵粬鍒嗚瘝紼嬪簭錛岄噸鏂板啓鐨勭浜岀増銆?/p>閫嗗悜鏈澶у尮閰嶄腑鏂囧垎璇嶇▼搴忥紝鑳藉疄鐜頒腑鑻辨枃鏁板瓧娣峰悎鍒嗚瘝銆傛瘮濡傝兘鍒嗗嚭榪欐牱鐨勮瘝錛歜b闇溿?瀹ゃ佷箰phone銆乼ouch4銆乵p3銆乀鎭?/p>
public class RMM2 extends M


{
public static final HashMap<Character,TreeNode> dic = Dictionary.getRmmdic();

/** *//**
* @return 榪斿洖鍖歸厤鏈闀胯瘝鐨勯暱搴? 娌℃湁鎵懼埌榪斿洖 0.
*/
public int maxMatch(TreeNode node,char[] sen, int offset)

{
int idx = offset;
for(int i=offset; i>=0; i--)

{
node = node.subNode(sen[i]);
if(node != null)

{
if(node.isAlsoLeaf())
idx = i;
}
else
break;
}
return idx ;
}
public ArrayList<Token> getToken(ArrayList<Sentence> list)

{
Collections.reverse(list);
ArrayList<Token> tokenlist=new ArrayList<Token>();
for(Sentence sen:list)

{
int i=sen.getText().length-1;
while(i>-1)

{
TreeNode n=dic.get(sen.getText()[i]);
if(n!=null)

{
int j=maxMatch(n, sen.getText(),i);
if(j<i)

{
Token token = new Token(new String(sen.getText(),j,i-j+1),sen.getStartOffset()+j,sen.getStartOffset()+i+1);
tokenlist.add(token);
i=j-1;
}
else

{
Token token = new Token(new String(sen.getText(),i,1),sen.getStartOffset()+i,sen.getStartOffset()+i+1);
tokenlist.add(token);
i--;
}
}
else

{
Token token = new Token(new String(sen.getText(),i,1),sen.getStartOffset()+i,sen.getStartOffset()+i+1);
tokenlist.add(token);
i--;
}
}
}
Collections.reverse(tokenlist);
return tokenlist;
}
}

]]>