public boolean isPalindrome3(String input, int index, int length)
{
if(index > (length-1-index))
return true;
else if(input.charAt(index)!=input.charAt(length-1-index))
return false;
else
return isPalindrome3(input, index + 1, length);
}
这里我首先传递输入字符串0,input.length()
答案 0 :(得分:3)
如果您不必使用递归,这里可以更有效地检查回文:
public boolean isPalindrome3(String input)
{
for (int start = 0, end = input.length() - 1; start < end; ) {
if (input.charAt(start++) != input.charAt(end--)) {
return false;
}
}
return true;
}
答案 1 :(得分:0)
我会这样写:
public boolean isPalindrome(String str, int offset)
{
int rightOffset = str.length() - offset - 1;
if (offset <= rightOffset)
{
char c1 = str.charAt(offset);
char c2 = str.charAt(rightOffset);
if (c1 != c2) return false;
return isPalindrome(str, offset + 1);
} else
{
return true;
}
}
与您的代码存在差异:
length
,因为这是一个String属性答案 2 :(得分:0)
public static String reverseString(String s) {
byte[] array = s.getBytes();
byte swap;
for( int i = 0, j = array.length - 1; i < array.length / 2; i++, j--) {
swap = array[ j ];
array[ j ] = array[ i ];
array[ i ] = swap;
}
return (new String(array));
}
if(myString.equals(reverseString(myString)))
// is palindrome