最近需要做字符的一个处理如下:
String str1 = "abc1234567hahah";
String str2 = "abq12577hahah2";
// 上面的两个字符 最后取到的值 应该是:7hahah
接下来是实现的方法:
private static void parsing(String str1, String str2) {
// 获取最长的字符
String maxLengthStr = str1.length() > str2.length() ? str1 : str2;
// 获取最短的字符
String minLengthStr = str1.length() > str2.length() ? str2 : str1;
// 连续的最长的字符
String continuousMaxStr = "";
// 拿到最短的字符串从第一个一一递归去和长的字符串进行比较
for (int i = 0; i < minLengthStr.length(); i++) {
for (int j = i; j < minLengthStr.length(); j++) {
String recursiveSubStr = minLengthStr.substring(i, j + 1);
// 只要在长的字符串中不存在该字符 就不用去递归去比较了,直接跳出当前循环 去拿下一个字符去接着递归
if ("" != recursiveSubStr && maxLengthStr.indexOf(recursiveSubStr) == -1) {
break;
}
if ((recursiveSubStr.length() > continuousMaxStr.length())) {
continuousMaxStr = recursiveSubStr;
}
}
}
System.out.println("连续重复最多的字符:" + continuousMaxStr);
}
通过对最短的字符进行一一组合,递归操作得到所有的可能连续的组合的值,然后去和较长的字符去做indexOf(str),判断是否在长的字符串中存在当前递归出来的字符,存在则去和最长字符字段进行长度比较。
本文含有隐藏内容,请 开通VIP 后查看