1. 程式人生 > >Java找出兩個字串中最大的子串

Java找出兩個字串中最大的子串

[java] view plain copy print?在CODE上檢視程式碼片派生到我的程式碼片
  1. // 找一個字串的最大子串
  2.     publicstaticvoid main(String[] args) {  
  3.         String s1 = ”qwerabcdtyuiop”;  
  4.         String s2 = ”xcabcdvbn”;  
  5.         String stringMax = stringMax(s1, s2);  
  6.         System.out.println(”最大的相同子字串是:” + stringMax);  
  7.     }  
  8.     /** 
  9.      * 找出兩個字串中最大的相同子字串 
  10.      * 
     
  11.      * @param s1 
  12.      * @param s2 
  13.      * @return 
  14.      */
  15.     privatestatic String stringMax(String s1, String s2) {  
  16.         // 記錄相同子字串
  17.         String sameString = null;  
  18.         // 比較兩個字條串的長度,這裡是設定S1的長度大於S2的長度
  19.         if (s1.length() < s2.length()) {  
  20.             // 如果s2的長度大,那麼就將兩個字串進行替換
  21.             String temp = s1;  
  22.             s1 = s2;  
  23.             s2 = temp;  
  24.         }  
  25.         // 如果s2就被包含在s1中,那麼這兩個字串最大的子串就是s2
  26.         boolean isContains = s1.contains(s2);  
  27.         if (isContains) {  
  28.             return s2;  
  29.         } else {  
  30.             boolean b1 = false;  
  31.             // 如果s2不是兩個字串最大的子類,那麼再進行迴圈查詢
  32.             for (int
     i = 0; i < s2.length(); i++) {  
  33.                 for (int j = 0; j <= i; j++) {  
  34.                     // 獲取每次進行比較的子字條串
  35.                     String str = s2.substring(j, s2.length() - i + j);  
  36.                     System.out.println(”第” + i + “次比較:” + str);  
  37.                     if (s1.contains(str)) {  
  38.                         sameString = str;  
  39.                         b1 = true;  
  40.                         break;  
  41.                     }  
  42.                 }  
  43.                 // 如果比較到s2中最小的為2的時候還沒有相同的字串,我們就預設沒相同的子字串
  44.                 if (s2.substring(0, s2.length() - i).length() == 2) {  
  45.                     System.out.println(”沒有相同的子字串”);  
  46.                     b1 = true;  
  47.                     break;  
  48.                 }  
  49.                 if (b1 == true)  
  50.                     break;  
  51.             }  
  52.         }  
  53.         return sameString;  
  54.     }  
// 找一個字串的最大子串
    public static void main(String[] args) {

        String s1 = "qwerabcdtyuiop";
        String s2 = "xcabcdvbn";
        String stringMax = stringMax(s1, s2);
        System.out.println("最大的相同子字串是:" + stringMax);
    }

    /**
     * 找出兩個字串中最大的相同子字串
     * 
     * @param s1
     * @param s2
     * @return
     */
    private static String stringMax(String s1, String s2) {
        // 記錄相同子字串
        String sameString = null;
        // 比較兩個字條串的長度,這裡是設定S1的長度大於S2的長度
        if (s1.length() < s2.length()) {
            // 如果s2的長度大,那麼就將兩個字串進行替換
            String temp = s1;
            s1 = s2;
            s2 = temp;
        }
        // 如果s2就被包含在s1中,那麼這兩個字串最大的子串就是s2
        boolean isContains = s1.contains(s2);

        if (isContains) {
            return s2;
        } else {
            boolean b1 = false;
            // 如果s2不是兩個字串最大的子類,那麼再進行迴圈查詢
            for (int i = 0; i < s2.length(); i++) {
                for (int j = 0; j <= i; j++) {
                    // 獲取每次進行比較的子字條串
                    String str = s2.substring(j, s2.length() - i + j);
                    System.out.println("第" + i + "次比較:" + str);
                    if (s1.contains(str)) {
                        sameString = str;
                        b1 = true;
                        break;
                    }

                }
                // 如果比較到s2中最小的為2的時候還沒有相同的字串,我們就預設沒相同的子字串
                if (s2.substring(0, s2.length() - i).length() == 2) {
                    System.out.println("沒有相同的子字串");
                    b1 = true;
                    break;

                }
                if (b1 == true)
                    break;
            }
        }
        return sameString;
    }

編譯執行:


分析原理圖:



相關推薦

Java字串大的子

[java] view plain copy print?// 找一個字串的最大子串    publicstaticvoid main(String[] args) {          String s1 = ”qwerabcdtyuiop”;          String s2 = ”xc

字串大的公共子java實現)

import java.util.HashSet; import java.util.Set; public class Test { public static void main(String[] args) { String

135、程式設計實現:字串大公共子字串,如"abccade","dgcadde"的大子為 "cad"

35、程式設計實現:找出兩個字串中最大公共子字串,如"abccade","dgcadde"的最大子串為 "cad" /* 35、程式設計實現:找出兩個字串中最大公共子字串,如"abccade","dgcadde"的最大子串為 "cad" 不同於56的最長公共子串 DP題

隨筆-字串不相同的元素

題目: 給定兩個字串 s 和 t,它們只包含小寫字母。 字串 t 由字串 s 隨機重排,然後在隨機位置新增一個字母。 請找出在 t 中被新增的字母。 示例: 輸入: s = “abcd” t = “abcde” 輸出: e 解釋: ‘e’ 是那個被新增的字母。

字串相同的詞語,返回一個分值

前言: 由於筆者工作的需求,給定一個字串,需要從一堆字串中找出與其最相似的字串,網路的一些演算法發現跟自己的需求不匹配,於是自己寫了一個,話不多說,請看下文。 目標: 給定兩個字串,能將兩個字串中相同詞語的相似度返回一個分值。 計分方式: 分值跟次數的個數有關,具體

java字串相同的元素

前兩天面試,面試官讓我在5分鐘之內手寫一個程式,就是找出兩個字串相等的元素,當時搞了一個雙重迴圈,面試官說很low。現在寫一個高效一點的,分享一下。 public class TestMain { public static void main(String[]

藍橋杯第五屆 字串大子序列

一個串的子串是指該串的一個連續的區域性。如果不要求連續,則可稱為它的子序列。 比如對串: "abcdefg" 而言,"ab","abd","bdef" 等都是它的子序列。 特別地,一個串本身,以及空

用JS字串相同的大子

例如 輸入:str1 : instritesting            str2:  string 輸出:stri   function Clear(str1,str2){

Java練習】獲取字串長的相同欄位

獲取兩個字串中最長的子串並輸出。 思路解析: 1.首先考慮我們要知道長度最短的字串,這樣子在比較的次數會更少。 2.我們首先從長度最小的字串每次擷取一小段判斷是否在大串中 3.考慮到有可能有多個長度相同的子串,那麼我們就應該將他們同時儲存到集合中 4.要多考慮到各種異常的發生。

Java學習 查詢字串大子

public static String getMaxSubString(String str1,String str2) { String max = null,min = null; if(str1.length()>str2.length())     

orcale 查相同欄位的不同的值minus

1.user表 SELECT user_id FROM OA_COMPANY_USER 2.專案表中投入過的人員 SELECT DISTINCT a.USER_ID FROM OA_COMPANY_USER a, OA_PM_PERSON_INPUT b WHERE a.

時間殺手—for迴圈—如何list的相同元素

import numpy import datetime a = numpy.random.randint( 5,1000,100000 ) b = numpy.random startt1 = datetime.datetime.now() l11 = sorted(list(set(a)))

字串大相同的子

求得短的字串和長的字串兩個字串中相同的字串段。    public static String getMaxSubString(String s1, String s2) {         String

編寫程式,獲取字串大相同子

private void test() { String a = "Valaienie"; String b = "Maierginle"; String max = a.length() > b.length() ? a : b; String min =

js陣列不同的元素

function arr(array,array2){     var arr3 = [];      for(鍵入陣列){           var stra = arra

R-數列的相同元素

R-找出兩列數中的相同數 通常在用交叉判斷,比如滿足A條件的點以及同時滿足B條件的點 a <- c(1,3,5,7,9) b <- c(3,6,8,9,10) c <- c(2,3,4,5,7,9) 要找出a,b,c中的相同數字 解決辦法一: inte

陣列相同的元素,不排序直接次迴圈取出

import java.util.ArrayList; import java.util.HashMap; import java.util.List; public class Test{ /** * 獲取兩個整型陣列之間的重複元素集合 * @param a

N整數大的K個數

《尋找N個元素中的前K個最大者》方法總結是在這裡看到的 /algorithm/20111105/314362.html ,我覺得解法二和解法四用得廣泛一些,程式設計實現了一下。 利用快速排序中的partition操作 經過partition後,pivot左邊的序列sa都大於pivot右邊的序列sb;

字串,找到長公共子,並返回其長度,java實現

給出兩個字串,找到最長公共子串,並返回其長度。 您在真實的面試中是否遇到過這個題? Yes 樣例 給出A=“ABCD”,B=“CBCE”,返回 2 注意 子串的字元應該連續的出現在原字串中,這

個數組都有,並且重復次數多的元素

var In IT 兩個 code TE total urn des var itemA = [1, 2, 3, 3] var itemB = [3, 3, 2] var crossArr = []; var countArr = []; itemA.forEach((e