因此,我想出了一种非常有效的方法来检查回文,但是我被要求将其更改为适合数字回文,然后再次卡住。
public boolean checkNumericPalindrome() {
String s = this.s.toLowerCase();
String resultString = "";
for(int i=0; i<s.length(); i++) {
if(Character.isDigit(s.charAt(i))) {
resultString = resultString + s.charAt(i);
}
}
int low = 0;
int high = resultString.length() - 1;
boolean isPalindrome = true;
while (low < high) {
if (resultString.charAt(low) != resultString.charAt(high)) {
isPalindrome = false;
break;
}
low++;
high--;
}
return isPalindrome;
}
`
我发现我必须将
Letters
更改为isDigits
,并且我知道我应该更改或摆脱toLowerCase
甚至是s.length
,但是我似乎找不到等效的数字,或者知道是否还有一个。 最佳答案
如果您不想对逻辑进行任何重大更改,则只需从输入数字中创建字符串并执行相同的操作即可。
public boolean checkNumericPalindrome(int number) {
String resultString = Integer.toString(number);
//proceed with same logic & process string
return true;
}
编辑:
更好的方法是:
public boolean checkNumericPalindrome(int number) {
return checkStringPalindrome(Integer.toString(number));
}
因此,只要对
checkStringPalindrome
进行更改,就无需更改其他方法。