演算法中的字串問題(JAVA)

2021-08-17 07:21:37 字數 1214 閱讀 8610

今天做到了一道演算法題,如下:求兩個字串的最大共子串長度,如"abcdkkk"和 "baabcdadabc",可以找到最長的公共子串是「abcd」,所以最大公共子串長度為4。

1.乙個字串的非空子串的求法

static void getallstr(string all)

}system.out.println("\n個數為:"+sum);

}

執行結果:

上面第二個for迴圈也就是

for (int begin = 0, end = all.length() - i; end <= all.length(); begin++, end++)
特別值得注意,感覺很巧妙,就像是乙個長度依次減小的視窗在從頭到尾不停滑動,優點在於可以很快的求到字串的最長子串與其他字串匹配,並且可以直接找到長度。

遍歷過程分析如下圖:

2.非空子串求到了,但也許會有一些相同的值,也就出現了字串陣列如何去掉重複值

去掉重複值的方法很多,這裡記錄一種才get到的簡單方法,直接使用set類,它自動幫你去掉了重複。。。**如下:

static void delduplicate(string str)

for(int i=0;i3.字串匹配問題

當求出字串的子串過後再來做匹配字串就更簡單了,只需要先做一些判斷再呼叫string類的contains()方法即可,**如下:

static int f(string s1, string s2)

string max = "";

string min = "";

if (s1.length() < s2.length()) else

// 記錄當前字串

string current = "";

for (int i = 0; i < min.length(); i++)

}} return 0;

}

當然,匹配字串還有其他一些方法,比如藍橋杯的題目是一道填空題,它給出的**就是乙個動態規劃的思路,動態規劃需要掌握的更多,留待下次總結。

java字串問題

1.stringutils中 isnotempty 和isnotblank的區別 isnotempty str 等價於 str null str.length 0 isnotblank str 等價於 str null str.length 0 str.trim length 0 trim 方法的作...

演算法 字串問題 翻轉字串

翻轉字串 給定乙個字元型別的陣列chas,請在單詞間作逆序調整。只要做到單詞順序逆序即可。例如,如果看成字串 dog loves pig 則調整為 pig loves dog 過程 先整體逆序,在區域性單詞逆序 public static void rotateword char chas reve...

java的字串相關問題

1 string 和stringbuffer stringbuilder 的區別 string 字串常量,一旦string物件被建立就不可以被修改,而例如 string str aaa str str abc 後面的str時新建立的物件,原來的str物件用完就會被gc 這樣修改字串使用的時間會很長。...