因此,我想出了一种非常有效的方法来检查回文,但是我被要求将其更改为适合数字回文,然后再次卡住。

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进行更改,就无需更改其他方法。

09-28 06:49