##给定一个字符串,验证它是不是回文串,只考虑字母和数字字符,能够忽略字母的大小写。java
说明:本题中,咱们将空字符串定义为有效的回文串。app
示例 1:函数
输入: "A man, a plan, a canal: Panama" 输出: trueui
示例 2:spa
输入: "race a car" 输出: falsecode
##Java版blog
class Solution { public boolean isPalindrome(String s) { s = s.toLowerCase(); //所有转换为小写 // 使用String 拼接,若是单词太多的话,会提示时间超时,使用StringBuilder就不会。 StringBuilder builder = new StringBuilder(); int i,len = s.length(); //变成只有小写字母和数字的字符串 for(i=0;i<len;i++) { char c = s.charAt(i); if((c>='0' && c<='9') || (c>='a' && c<='z')) { builder.append(c); } } return builder.toString().equals(builder.reverse().toString()); } }
##C语言版字符串
bool isPalindrome(char* s) { int i,k=0,len =strlen(s); char *ss = (char *)malloc(sizeof(char)*len); //拼接一个只有小写字母和数字的字符串 for(i=0;i<len;i++) { if((s[i]>='0' && s[i]<='9') || (tolower(s[i])>='a' && tolower(s[i])<='z' )) { ss[k++]=tolower(s[i]); } } //判断是否回文 for(i=0;i<k/2;i++) { if(ss[i]!=ss[k-i-1]) { return false; } } return true; }
##运行结果 io