/** * 计算最长回文子串的深度即长度 * @param srcStr * @return */ public static Integer getMaxHuiwenSubStrLen(String srcStr){ String s = changeParenStrIntoFormatStr(srcStr); if (s==null){ return null; } if (s.isEmpty()){ return null; } if (!isHuiwenStr(s)){ return null; } return s.length()/2; } /** * 把括号字符串格式化成为回文字符串 * @param parenStr * @return */ public static String changeParenStrIntoFormatStr(String parenStr){ if (parenStr==null){ return null; } if (parenStr.isEmpty()){ return null; } for (int i = 0; i < parenStr.length(); i++) { char c = parenStr.charAt(i); if (!(c=='(' || c== ')')){ return null; } } if (!isHuiwenStr(parenStr)){ return null; } ArrayList characters = new ArrayList(); for (int i = 0; i < parenStr.length(); i++) { char c = parenStr.charAt(i); if (c=='('){ characters.add('a'); } else if (c==')') { characters.add('a'); } } StringBuilder stringBuilder = new StringBuilder(); characters.forEach(e->{ stringBuilder.append(e); }); return stringBuilder.toString(); } /** * 判断字符串是否是回文字符串 * @param srcStr * @return */ public static Boolean isHuiwenStr(String srcStr){ if (srcStr==null){ return null; } if (srcStr.isEmpty()){ return null; } if (srcStr.length()%2!=0){ return null; } int count=0; for (int i = 0; i < srcStr.length()/2; i++) { char c = srcStr.charAt(i); char c1 = srcStr.charAt(srcStr.length() - i - 1); if (c==c1){ count++; if (count==srcStr.length()/2){ break; } continue; }else { return false; } } return true; } |
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |