场景
面试官: 你这边对回文字符串有没有了解? 能找出任意一个字符串中长度最长的回文字符串吗?
ME: ......
面完后去了解了一下回文字符串, 在此简单记录一下.
什么是回文字符串?
“回文串”是一个正读和反读都一样的字符串,比如“abcba”或者“noon”等等就是回文串。
代码实现
对于面试官的问题, 私下写了一个实现法案, 测试了一下,能满足这个需求~
/**
* 找出字符串中最大的回文字符串
* @param str 传入的字符串
* @return
*/
private String getMaxHuiWenStr(String str) {
int length = str.length();
String maxString = "";
for (int i = 0; i < length; i++) {
for (int j = i + 1; j <= length; j++) {
String tempStr = str.substring(i, j);
if (isHuiWenStr(tempStr) && tempStr.length() > maxString.length()) {
maxString = tempStr;
}
}
}
return maxString;
}
private boolean isHuiWenStr(String str) {
if (str.length() == 1) {
return false;
}
boolean flag = true;
int length = str.length();
char[] tempChar = str.toCharArray();
for (int i = 0, j = length - 1; i <= j; i++, j--) {
if (tempChar[i] != tempChar[j]) {
flag = false;
}
}
return flag;
}