今天做到了一道演算法題,如下:求兩個字串的最大共子串長度,如"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 這樣修改字串使用的時間會很長。...