判断一个字符串是否为回文字符串的常见方法是使用双指针。首先,我们定义两个指针,一个指向字符串的起始位置,另一个指向字符串的末尾位置。然后,在每一步迭代中,我们比较两个指针所指向的字符是否相等。如果相等,我们将两个指针向中间移动一位继续比较;如果不相等,说明字符串不是回文字符串,返回false。直到两个指针相遇,或者其中一个指针超过另一个指针,即遍历完整个字符串,都没有出现不相等的情况,则字符串是回文字符串,返回true。
以下是一个用Java实现的回文字符串判断的示例代码:
public class Palindrome {
public static boolean isPalindrome(String str) {
int start = 0; // 起始指针
int end = str.length() - 1; // 末尾指针
while (start < end) {
if (str.charAt(start) != str.charAt(end)) {
return false; // 不相等,不是回文字符串
}
start++;
end--;
}
return true; // 相等,是回文字符串
}
public static void main(String[] args) {
String str = "abcba";
System.out.println(isPalindrome(str)); // 输出:true
}
}
在上述代码中,我们使用了charAt()
方法获取字符串中指定位置的字符,并使用==
运算符比较字符是否相等。注意,在Java中,字符串的索引从0开始,所以起始指针start
初始化为0,末尾指针end
初始化为字符串长度减1。在每一步迭代中,我们将start
指针向后移动一位,将end
指针向前移动一位,直到两个指针相遇或者交错。如果在迭代过程中出现不相等的字符,说明字符串不是回文字符串,返回false。如果迭代完整个字符串都没有出现不相等的情况,说明字符串是回文字符串,返回true。