题解 | #回文昵称#
回文昵称
https://www.nowcoder.com/practice/5ac63bfdf73c473d9dee7e3294551563
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return bool布尔型 */ public boolean isPalindromeNickname (String s) { // 去除非字母数字字符并转换为小写 s = s.replaceAll("[^a-zA-Z0-9]", "").toLowerCase(); // 判断是否为回文字符串 int left = 0; int right = s.length() - 1; while (left < right) { if (s.charAt(left) != s.charAt(right)) { return false; } left++; right--; } return true; } }
Java语言
该题考察的主要知识点包括:
- 字符串操作:使用字符串的方法进行字符处理、转换和比较。
- 正则表达式:使用正则表达式来去除非字母数字字符。
- 循环和双指针法:通过循环和双指针法判断字符串是否为回文。
代码解释:
- 使用 replaceAll("[^a-zA-Z0-9]", "") 方法通过正则表达式去除昵称字符串中的非字母数字字符。
- 将字符串转换为小写,以便进行大小写忽略的比较。
- 初始化左右两个指针,通过循环和比较字符来判断字符串是否为回文。
- 如果左右指针指向的字符不相等,说明不是回文,返回 false。
- 如果循环结束后没有返回 false,则说明字符串是回文,返回 true。