中级农民
- 积分
- 118
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2016-3-17
- 最后登录
- 1970-1-1
|
- public String format(String name, String[] array){
- if(array.length == 0 || name == null || name.length() == 0){
- return name;
- }
- Map<Character, Set<String>> dict = getDict(array);
- StringBuilder sb = new StringBuilder();
- for(int i=0; i<name.length(); ){
- Character c = new Character(name.charAt(i));
- String str = match(c, i, name, dict);
- if(str.length()==0){
- sb.append(c);
- i++ ;
- }else{
- sb.append("[").append(str).append("]");
- i+=str.length();
- }
- }
- return sb.toString();
- }
-
- private String match(Character c, int index, String name, Map<Character, Set<String>> dict){
- String maxMatch = "";
- if(!dict.containsKey(c)){
- return maxMatch;
- }
- Set<String> set = dict.get(c);
-
- for(String s: set){
- if(s.length() <= (name.length() - index)
- && name.indexOf(s) == index && s.length()>maxMatch.length()){
- maxMatch = s;
- }
- }
-
- if(maxMatch.length()!=0){
- maxMatch = maxMatch.replaceFirst(c.toString(), c.toString().toUpperCase());
- }
-
- return maxMatch;
- }
-
- private Map<Character, Set<String>> getDict(String[] array){
- Map<Character, Set<String>> dict = new HashMap<>();
- for(String str:array){
- str = str.toLowerCase();
- Character c = new Character(str.charAt(0));
- Set<String> set=dict.get(c);
- if(set == null){
- set = new HashSet<String>();
- dict.put(c, set);
- }
- set.add(str.toLowerCase());
- }
- return dict;
- }
复制代码 |
|