<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Change Dir

    先知cd——熱愛生活是一切藝術的開始

    統計

    留言簿(18)

    積分與排名

    “牛”們的博客

    各個公司技術

    我的鏈接

    淘寶技術

    閱讀排行榜

    評論排行榜

    總結一下幾天前的LCS算法編寫

    沒有過多的技術含量,只是拿來分享一下,希望不要被手懶的各位學生朋友直接拿去做作業。大家有興趣可以和我探討,最近看來有時間可以做些研究工作。

    不說了,參考文章去百度搜一下吧,最長公共子串。

    DP解:

       1: /**
       2:      * 動態規劃求最長公共子串
       3:      * 
       4:      * @param s
       5:      * @param t
       6:      * @return
       7:      */
       8:     public String getLCSByDP(String s, String t) {
       9:         int len_s = s.length();
      10:         int len_t = t.length();
      11:         String[][] num = new String[len_s][len_t];
      12:         char ch1 = '\0';
      13:         char ch2 = '\0';
      14:         int len = 0;
      15:         String res = "";
      16:         for (int i = 0; i < len_s; i++) {
      17:             for (int j = 0; j < len_t; j++) {
      18:                 ch1 = s.charAt(i);
      19:                 ch2 = t.charAt(j);
      20:                 if (ch1 != ch2) {
      21:                     num[i][j] = "";
      22:  
      23:                 } else {
      24:                     if (i == 0 || j == 0) {
      25:                         num[i][j] = ch1 + "";
      26:                     } else {
      27:                         num[i][j] = num[i - 1][j - 1] + ch1;
      28:                     }
      29:                     if (num[i][j].length() > len) {
      30:                         len = num[i][j].length();
      31:                         res = num[i][j];
      32:                     }
      33:                 }
      34:             }
      35:         }
      36:         return res;
      37:     }

     

    GST解:

       1: public static final String tail1 = "$1";
       2:     public static final String tail2 = "$2";
       3:  
       4: /**
       5:      * 求最長公共前綴LCP
       6:      * 
       7:      * @param word1
       8:      * @param word2
       9:      * @return
      10:      */
      11:     public String getLCP(String word1, String word2) {
      12:         String res = "";
      13:         int len1 = word1.length();
      14:         int len2 = word2.length();
      15:         for (int i = 0; i < Math.min(len1, len2); i++) {
      16:             if (word1.charAt(i) == word2.charAt(i)) {
      17:                 res += word1.charAt(i);
      18:             } else
      19:                 break;
      20:         }
      21:         return res;
      22:     }
      23:  
      24:     /**
      25:      * 后綴數組方法求最長公共子串
      26:      * 
      27:      * @param word1
      28:      * @param word2
      29:      * @return
      30:      */
      31:     public String getLCSByGST(String word1, String word2) {
      32:         String res = "";
      33:         
      34:         int len1 = word1.length();
      35:         int len2 = word2.length();
      36:         String gst[] = new String[len1 + len2];
      37:         for (int i = 0; i < len1; i++) {
      38:             gst[i] = mergeSuffix(word1.substring(i), word2);
      39:         }
      40:         for (int i = 0; i < len2; i++) {
      41:             gst[i + len1] = word2.substring(i) + tail2;
      42:         }
      43:         Arrays.sort(gst);
      44:         for (int i = 0; i < gst.length - 1; i++) {
      45:             String str = getLCP(gst[i], gst[i + 1]);
      46:             if (str.length() > res.length()) {
      47:                 res = str;
      48:             }
      49:         }
      50:         if (res.endsWith("$"))
      51:             res = res.substring(0, res.length() - 1);
      52:         return res;
      53:     }
      54:  
      55:     private String mergeSuffix(String word1, String word2) {
      56:         StringBuffer sb = new StringBuffer();
      57:         sb.append(word1);
      58:         sb.append(tail1);
      59:         sb.append(word2);
      60:         sb.append(tail2);
      61:         return sb.toString();
      62:     }

    我的應用是需要做字符串相似度的計算,所以需要求出來最長公共子串。在沒有任何語義背景的解釋的情況下,一個自己設計的相似度模型如下:

    clip_image002

    posted on 2011-06-03 10:18 changedi 閱讀(2599) 評論(0)  編輯  收藏 所屬分類: 算法

    主站蜘蛛池模板: 人妻免费一区二区三区最新| 国产自国产自愉自愉免费24区| 亚洲小说图区综合在线| 美女一级毛片免费观看| 免费无码VA一区二区三区| 在线免费观看一级毛片| 亚洲成色在线综合网站 | 色噜噜亚洲精品中文字幕| 亚洲福利电影在线观看| 日韩a毛片免费观看| www视频在线观看免费| 亚洲日韩涩涩成人午夜私人影院| 亚洲高清中文字幕综合网| 男人免费视频一区二区在线观看| 30岁的女人韩剧免费观看| 日韩亚洲精品福利| 亚洲日韩国产精品无码av| 国产精品免费一区二区三区| 毛片免费全部免费观看| 亚洲AV无码成人精品区蜜桃| 怡红院亚洲红怡院在线观看| 亚洲视频免费观看| 狠狠亚洲婷婷综合色香五月排名 | 亚洲精品永久在线观看| 免费av一区二区三区| 波多野结衣免费视频观看| 亚洲视频一区在线播放| av午夜福利一片免费看久久| 好爽…又高潮了免费毛片| 亚洲精品视频在线| 久久精品无码免费不卡| 国产大片91精品免费看3| 亚洲不卡1卡2卡三卡2021麻豆| 国产免费久久精品99久久| 国产精品黄页在线播放免费| 91亚洲性爱在线视频| 久9热免费精品视频在线观看| 亚洲日韩在线观看| jizzjizz亚洲日本少妇| 国产在线国偷精品产拍免费| 久久久无码精品亚洲日韩按摩|