日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

词语搜索算法思想 - 第五步 结构实现

發(fā)布時(shí)間:2024/4/14 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 词语搜索算法思想 - 第五步 结构实现 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??

第四步我們完成了組合的數(shù)組,現(xiàn)在我們需要對(duì)接第二步的方法,先做一個(gè)數(shù)組結(jié)合成字符串方法:

????public static void main(String[] args) {String item = "娛樂(lè)八卦"; // System.out.println(Arrays.toString(split(item))); // System.out.println(Arrays.toString(split("ylbg"))); // System.out.println(Arrays.toString(split("yu,le,ba,gua")));ArrayList<String[]> list = pinyin(item); // for (String[] arr : list) { // System.out.println(Arrays.toString(arr)); // } // CompositeUtil<String> t = new CompositeUtil<String>(list); // for (String[] strings : t.getResult()) { // System.out.println(Arrays.toString(strings)); // }System.out.println(Arrays.toString(composite(list)));}/*** 拼音組合*/public static String[] composite(ArrayList<String[]> list) {StringBuffer buff = new StringBuffer();CompositeUtil<String> t = new CompositeUtil<String>(list);List<String[]> result = t.getResult();int length = result.size();String[] back = new String[length];for (int i = 0; i < length; i++) {buff = new StringBuffer();for (String s : result.get(i)) {if (buff.length() > 0)buff.append(",");buff.append(s);}back[i] = buff.toString();}return back;}

輸出:

[yu,le,ba,gua, yu,yue,ba,gua]

現(xiàn)在對(duì)每個(gè)組合進(jìn)行分割:

????public static void main(String[] args) {String item = "娛樂(lè)八卦"; // System.out.println(Arrays.toString(split(item))); // System.out.println(Arrays.toString(split("ylbg"))); // System.out.println(Arrays.toString(split("yu,le,ba,gua")));ArrayList<String[]> list = pinyin(item); // for (String[] arr : list) { // System.out.println(Arrays.toString(arr)); // } // CompositeUtil<String> t = new CompositeUtil<String>(list); // for (String[] strings : t.getResult()) { // System.out.println(Arrays.toString(strings)); // }String[] pinyin = composite(list);System.out.println(Arrays.toString(pinyin));for (String p : pinyin)System.out.println(Arrays.toString(split(p)));}

輸出:

[yu,le,ba,gua, yu,yue,ba,gua] [y, yu, yu, yul, yule, yule, yuleb, yuleba, yuleba, yulebag, yulebagu, yulebagua, l, le, le, leb, leba, leba, lebag, lebagu, lebagua, b, ba, ba, bag, bagu, bagua, g, gu, gua] [y, yu, yu, yuy, yuyu, yuyue, yuyue, yuyueb, yuyueba, yuyueba, yuyuebag, yuyuebagu, yuyuebagua, y, yu, yue, yue, yueb, yueba, yueba, yuebag, yuebagu, yuebagua, b, ba, ba, bag, bagu, bagua, g, gu, gua]

我們還有一個(gè)小問(wèn)題沒(méi)有解決,就是詞語(yǔ)拼音首個(gè)字母組合,有以上的基礎(chǔ),我們只要稍微修改下就能滿足我們的需求:

????public static void main(String[] args) {boolean first = true;String item = "娛樂(lè)八卦"; // System.out.println(Arrays.toString(split(item, first))); // System.out.println(Arrays.toString(split("ylbg", first))); // System.out.println(Arrays.toString(split("yu,le,ba,gua")));ArrayList<String[]> list = pinyin(item, first);for (String[] arr : list) {System.out.println(Arrays.toString(arr));} // CompositeUtil<String> t = new CompositeUtil<String>(list); // for (String[] strings : t.getResult()) { // System.out.println(Arrays.toString(strings)); // }String[] pinyin = composite(list, first);System.out.println(Arrays.toString(pinyin));for (String p : pinyin)System.out.println(Arrays.toString(split(p, first)));}/*** 拼音組合*/public static String[] composite(ArrayList<String[]> list, boolean first) {StringBuffer buff = new StringBuffer();CompositeUtil<String> t = new CompositeUtil<String>(list);List<String[]> result = t.getResult();int length = result.size();String[] back = new String[length];for (int i = 0; i < length; i++) {buff = new StringBuffer();for (String s : result.get(i)) {if (!first && buff.length() > 0)buff.append(",");buff.append(s);}back[i] = buff.toString();}return back;}/*** 詞語(yǔ)拼音*/public static ArrayList<String[]> pinyin(String s, boolean first) {HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); // 小寫(xiě)defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); // 不用聲標(biāo)String[] pinyinArray = null;ArrayList<String> temp;ArrayList<String[]> list = new ArrayList<String[]>();for (char c : s.toCharArray()) {try {pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c,defaultFormat);} catch (BadHanyuPinyinOutputFormatCombination e) {e.printStackTrace();}if (pinyinArray == null) {list.add(new String[] { String.valueOf(c) });} else {temp = new ArrayList<String>();for (String p : pinyinArray) {if (first) {if (!temp.contains(p.substring(0, 1))) {temp.add(p.substring(0, 1));}} else {if (!temp.contains(p)) {temp.add(p);}}}list.add(temp.toArray(new String[temp.size()]));}}return list;}/*** 切割詞語(yǔ)*/public static String[] split(String s, boolean first) {int next = 0;String temp = "";int len = s.length();ArrayList<String> list = new ArrayList<String>();for (int i = 0; i < len; i++) {if (s.charAt(i) == ',') {next = 0;} else {if (i != 0 && next == 0)next = 1;}if (first || next == 0)for (int j = i + 1; j <= len; j++) {temp = s.substring(i, j).replace(",", "");if (temp.length() > 0)list.add(temp);}}return list.toArray(new String[list.size()]);}

對(duì)composite、pinyin和split方法加入first參數(shù),表示如果想獲得拼音首個(gè)字母,傳入true,否則傳入false。輸出:

[ylbg, yybg] [y, yl, ylb, ylbg, l, lb, lbg, b, bg, g] [y, yy, yyb, yybg, y, yb, ybg, b, bg, g]

搜索數(shù)據(jù)機(jī)構(gòu)已經(jīng)準(zhǔn)備完畢,接下來(lái)只是把這些準(zhǔn)備好的東西實(shí)現(xiàn)需要的數(shù)據(jù)結(jié)構(gòu)了:

public static void main(String[] args) { // boolean first = true; // String item = "娛樂(lè)八卦"; // System.out.println(Arrays.toString(split(item, first))); // System.out.println(Arrays.toString(split("ylbg", first))); // System.out.println(Arrays.toString(split("yu,le,ba,gua"))); // ArrayList<String[]> list = pinyin(item, first); // for (String[] arr : list) { // System.out.println(Arrays.toString(arr)); // } // CompositeUtil<String> t = new CompositeUtil<String>(list); // for (String[] strings : t.getResult()) { // System.out.println(Arrays.toString(strings)); // } // String[] pinyin = composite(list, first); // System.out.println(Arrays.toString(pinyin)); // for (String p : pinyin) // System.out.println(Arrays.toString(split(p, first))); // String[] items = { "娛樂(lè)八卦", "經(jīng)濟(jì)論壇" };HashMap<String, ArrayList<String>> map = map(items);System.out.println(map);}/*** 構(gòu)造數(shù)據(jù)結(jié)構(gòu)*/public static HashMap<String, ArrayList<String>> map(String[] items) {ArrayList<String> values = new ArrayList<String>();HashMap<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();String[] temp;for (String item : items) {// 中文詞語(yǔ)切割temp = split(item, true);for (String t : temp) {if (map.containsKey(t)) {if (!map.get(t).contains(item))map.get(t).add(item);} else {values = new ArrayList<String>();values.add(item);map.put(t, values);}}// 中文拼音首個(gè)字母temp = composite(pinyin(item, true), true);for (String str : temp) {for (String t : split(str, true)) {if (map.containsKey(t)) {if (!map.get(t).contains(item))map.get(t).add(item);} else {values = new ArrayList<String>();values.add(item);map.put(t, values);}}}// 中文拼音temp = composite(pinyin(item, false), false);for (String str : temp) for (String t : split(str, false)) {if (map.containsKey(t)) {if (!map.get(t).contains(item))map.get(t).add(item);} else {values = new ArrayList<String>();values.add(item);map.put(t, values);}}}return map;}

輸出結(jié)構(gòu):

{yulebag=[娛樂(lè)八卦], 經(jīng)濟(jì)論=[經(jīng)濟(jì)論壇], jingjilu=[經(jīng)濟(jì)論壇], yuyuebagu=[娛樂(lè)八卦], yuyuebag=[娛樂(lè)八卦], 經(jīng)濟(jì)論壇=[經(jīng)濟(jì)論壇], lun=[經(jīng)濟(jì)論壇], gua=[娛樂(lè)八卦], bagua=[娛樂(lè)八卦], lebag=[娛樂(lè)八卦], jingjilunta=[經(jīng)濟(jì)論壇], 論=[經(jīng)濟(jì)論壇], luntan=[經(jīng)濟(jì)論壇], 娛=[娛樂(lè)八卦], jilun=[經(jīng)濟(jì)論壇], yuy=[娛樂(lè)八卦], bag=[娛樂(lè)八卦], yul=[娛樂(lè)八卦], 樂(lè)=[娛樂(lè)八卦], ylb=[娛樂(lè)八卦], yue=[娛樂(lè)八卦], 娛樂(lè)八卦=[娛樂(lè)八卦], yuyue=[娛樂(lè)八卦], gu=[娛樂(lè)八卦], tan=[經(jīng)濟(jì)論壇], ylbg=[娛樂(lè)八卦], jingjiluntan=[經(jīng)濟(jì)論壇], yybg=[娛樂(lè)八卦], 濟(jì)=[經(jīng)濟(jì)論壇], lu=[經(jīng)濟(jì)論壇], lt=[經(jīng)濟(jì)論壇], 論壇=[經(jīng)濟(jì)論壇], 娛樂(lè)=[娛樂(lè)八卦], yuebagu=[娛樂(lè)八卦], 八卦=[娛樂(lè)八卦], jiluntan=[經(jīng)濟(jì)論壇], jingjil=[經(jīng)濟(jì)論壇], g=[娛樂(lè)八卦], 樂(lè)八卦=[娛樂(lè)八卦], b=[娛樂(lè)八卦], yuyueb=[娛樂(lè)八卦], l=[娛樂(lè)八卦, 經(jīng)濟(jì)論壇], j=[經(jīng)濟(jì)論壇], yulebagu=[娛樂(lè)八卦], t=[經(jīng)濟(jì)論壇], yuebag=[娛樂(lè)八卦], yuyu=[娛樂(lè)八卦], leb=[娛樂(lè)八卦], y=[娛樂(lè)八卦], lunt=[經(jīng)濟(jì)論壇], 壇=[經(jīng)濟(jì)論壇], jl=[經(jīng)濟(jì)論壇], jj=[經(jīng)濟(jì)論壇], jin=[經(jīng)濟(jì)論壇], jil=[經(jīng)濟(jì)論壇], jingji=[經(jīng)濟(jì)論壇], ta=[經(jīng)濟(jì)論壇], jingjilunt=[經(jīng)濟(jì)論壇], bg=[娛樂(lè)八卦], yyb=[娛樂(lè)八卦], yuyuebagua=[娛樂(lè)八卦], jingj=[經(jīng)濟(jì)論壇], yulebagua=[娛樂(lè)八卦], leba=[娛樂(lè)八卦], jjl=[經(jīng)濟(jì)論壇], le=[娛樂(lè)八卦], 經(jīng)濟(jì)=[經(jīng)濟(jì)論壇], lb=[娛樂(lè)八卦], jilunt=[經(jīng)濟(jì)論壇], 樂(lè)八=[娛樂(lè)八卦], yuyueba=[娛樂(lè)八卦], yueb=[娛樂(lè)八卦], jilunta=[經(jīng)濟(jì)論壇], yy=[娛樂(lè)八卦], yueba=[娛樂(lè)八卦], lebagu=[娛樂(lè)八卦], 經(jīng)=[經(jīng)濟(jì)論壇], jjlt=[經(jīng)濟(jì)論壇], 八=[娛樂(lè)八卦], jilu=[經(jīng)濟(jì)論壇], yuleba=[娛樂(lè)八卦], ybg=[娛樂(lè)八卦], lebagua=[娛樂(lè)八卦], ba=[娛樂(lè)八卦], 娛樂(lè)八=[娛樂(lè)八卦], yb=[娛樂(lè)八卦], jlt=[經(jīng)濟(jì)論壇], jing=[經(jīng)濟(jì)論壇], jingjilun=[經(jīng)濟(jì)論壇], lunta=[經(jīng)濟(jì)論壇], 濟(jì)論=[經(jīng)濟(jì)論壇], yuleb=[娛樂(lè)八卦], 濟(jì)論壇=[經(jīng)濟(jì)論壇], lbg=[娛樂(lè)八卦], yu=[娛樂(lè)八卦], 卦=[娛樂(lè)八卦], yuebagua=[娛樂(lè)八卦], ji=[經(jīng)濟(jì)論壇], yule=[娛樂(lè)八卦], bagu=[娛樂(lè)八卦], yl=[娛樂(lè)八卦]}

到這里,可以解決這個(gè)問(wèn)題了,能否更好解決這個(gè)問(wèn)題?

轉(zhuǎn)載于:https://my.oschina.net/fangxu/blog/41569

總結(jié)

以上是生活随笔為你收集整理的词语搜索算法思想 - 第五步 结构实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 麻豆91茄子在线观看 | 国产精品ⅴa有声小说 | 免费黄色一级 | 中文字幕无线精品亚洲乱码一区 | av网站一区 | 麻豆www. | 91污在线观看 | 四虎一国产精品一区二区影院 | av老司机在线 | 国产成人精品123区免费视频 | 欧美日韩另类一区 | 国产精品久久久久久久久久直播 | 欧美日韩一区二区三区在线电影 | 中文字幕视频在线播放 | 午夜福利毛片 | 91丨porny丨海角社区 | 岛国av一区二区三区 | 欧美成人三级精品 | 极品美女被c| 青草视频免费看 | 蝌蚪网在线视频 | 四虎影视免费永久观看在线 | 二区三区免费 | 国产1区2区3区4区 | 欧美性受xxxx黒人xyx性爽 | 日日燥夜夜燥 | 精品无码久久久久久久久久 | 国产精品免费一区二区三区都可以 | 亚洲高清在线视频 | 91av视频在线免费观看 | 成人深夜电影 | 好色婷婷 | 免费福利在线视频 | 久久理论电影 | 亚洲丝袜在线观看 | 免费一级做a爰片久久毛片潮 | 老子午夜影院 | 神马久久香蕉 | 人人狠狠综合久久亚洲 | 国产精品揄拍100视频 | 亚洲aa视频 | 丰满少妇麻豆av苏语棠 | 神马伦理影视 | 男人插入女人下面视频 | 永久av| 91麻豆成人精品国产免费网站 | av官网在线观看 | 黄色大片在线 | jizz内谢中国亚洲jizz | 久久在线播放 | 久草久热| 最新黄色av网站 | 丁香啪啪 | 中文字幕专区 | 熟妇人妻va精品中文字幕 | 黄色一级片. | 亚洲综合三区 | 久91| 免费看色 | 综合视频 | 精品在线视频一区二区三区 | 全黄毛片 | 成人在线精品视频 | 色爱区综合 | 让人下面流水的视频 | 日本不卡视频一区 | www.操 | www.日韩视频 | 欧美日韩在线中文字幕 | 国产亚洲一区二区三区四区 | 欧美少妇喷水 | 国产一级久久久 | 亚洲不卡在线观看 | 国产一区亚洲二区 | 国语对白对话在线观看 | 国产乱偷| 精品人妻无码一区二区三区蜜桃一 | 在线观看高清av | 日韩精品免费在线视频 | 亚洲国产精品久久久久爰性色 | 国内偷拍第一页 | 狠狠干2022| 90岁肥老奶奶毛毛外套 | 无码成人一区二区 | 国产三级三级三级 | 欧美区一区二 | 久久精品在线 | 天天爽夜夜 | 欧美做爰啪啪xxxⅹ性 | 午夜精品一区二 | 日本不卡一区二区在线观看 | 丝袜 中出 制服 人妻 美腿 | 中文字幕 视频一区 | 中文字幕女同 | 午夜寂寞视频 | 国产免费不卡 | 日韩视频一二三区 | 毛片aa| 久久久青草 |