验证回文串
题目解析
题目给定一个字符串,让我们判断字符串是否为回文串,可忽略标点符号、空格、大小写区别。
ps:回文串特点类似于“对称”,例:“abcdedcba”。
所以,左右分别设一个指针。若左右对应的有效字符(字母或数字)相等,则两边的指针同步向里移动。一旦遇到不等情况,则说明不符合“回文串”的特点,返回false。
代码实现
在进行左右指针所指字符的比较相等之前,应先考虑需要忽略的问题。
- 字母大小写问题:需要对大小写字母进行统一(这里采用统一成小写字母),以便于后续对字符是否相等进行判断。这里封装了一个 tolower() 函数用来转换大小写。通过ASCII码来判断是否为大写字母,若是,则转换为小写。若为其他字符则不需要改变。
- 判断是否为有效字符问题:这里封装成了isvalid()函数,若字符的ASCII码在48-57(数字范围)或者97-122(小写字母范围)之间,说明是有效字符,则返回true,否则返回false。ps:没有考虑字符ASCII码是否在65-90(大写字母范围)之间,是因为主函数中的算法在取得左右端字符时就将其已经转化为小写字母了,所以没有必要。
- 忽略其他无效字符: