给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: "A man, a plan, a canal: Panama"
输出: true示例 2:
输入: "race a car"
输出: falsejava知识点
Java 字符串拼接,推荐使用StringBuilder
String 本身没有反转函数 ,但是StringBuilder有 reverse()
String s = "abcd";
StringBuilder builder = new StringBuilder(s);
System.out.println(builder.reverse().toString()); // 输出 dcba
Java版
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='0' && c<='9') || (c>='a' && c<='z')) { builder.append(c); } } return builder.toString().equals(builder.reverse().toString()); }}
C语言知识点
C语言 strlen() tolower() toupper()
char c[]="aBc";
int len = strlen(c); // len长为3
tolower(c); // "aBc" 变成 "abc"
toupper(c); // "aBc" 变成 "ABC"
C语言版
bool isPalindrome(char* s) { int i,k=0,len =strlen(s); char *ss = (char *)malloc(sizeof(char)*len); //拼接一个只有小写字母和数字的字符串 for(i=0;i='0' && s[i]<='9') || (tolower(s[i])>='a' && tolower(s[i])<='z' )) { ss[k++]=tolower(s[i]); } } //判断是否回文 for(i=0;i