[LeetCode]125.Valid Palindrome

简介:

【题目】

Valid Palindrome

  Total Accepted: 3479  Total Submissions: 16532 My Submissions

Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.

For example,
"A man, a plan, a canal: Panama" is a palindrome.
"race a car" is not a palindrome.

Note:
Have you consider that the string might be empty? This is a good question to ask during an interview.

For the purpose of this problem, we define empty string as valid palindrome.


【代码】

【方法1】

/*********************************
*   日期:2013-12-09
*   作者:SJF0115
*   题目: 125.Valid Palindrome
*   来源:http://oj.leetcode.com/problems/valid-palindrome/
*   结果:AC
*   来源:LeetCode
*   总结:
**********************************/
class Solution {
public:
    bool isStr(char &ch){
        //数字
        if(ch >= '0' && ch <= '9'){
            return true;
        }
        //小写字母
        else if(ch >= 'a' && ch <= 'z'){
            return true;
        }
        //大写字母
        else if(ch >= 'A' && ch <= 'Z'){
            //转换为小写
            ch += 32;
            return true;
        }
        return false;
    }

    bool isPalindrome(string s){
        int i,j;
        int len = s.length();
        if(len == 0){
            return true;
        }
        string str = "";
        //去掉非数字字母字符
        for(i = 0; i < len; i++){
            if(isStr(s[i])){
                str += s[i];
            }
        }
        len = str.length();
        for(i = 0,j = len - 1; i < j; i++,j--){
            if(str[i] != str[j]){
                return false;
            }
        }
        return true;
    }
};


【方法2】

class Solution {
public:
    bool isStr(char &ch){
        //数字
        if(ch >= '0' && ch <= '9'){
            return true;
        }
        //小写字母
        else if(ch >= 'a' && ch <= 'z'){
            return true;
        }
        //大写字母
        else if(ch >= 'A' && ch <= 'Z'){
            //转换为小写
            ch += 32;
            return true;
        }
        return false;
    }

    bool isPalindrome(string s){
        int i,j;
        int len = s.length();
        if(len == 0){
            return true;
        }
        len = s.length();
        for(i = 0,j = len - 1; i < j;){
            if(!isStr(s[i])){
                i++;
                continue;
            }
            if(!isStr(s[j])){
                j--;
                continue;
            }
            if(s[i] != s[j]){
                return false;
            }
            i++;
            j--;
        }
        return true;
    }
};


【测试】

/*********************************
*   日期:2013-12-09
*   作者:SJF0115
*   题号: 题目: Valid Palindrome
*   来源:http://oj.leetcode.com/problems/valid-palindrome/
*   结果:AC
*   来源:LeetCode
*   总结:
**********************************/
#include <iostream>
#include <stdio.h>
using namespace std;

class Solution {
public:
    bool isStr(char &ch){
        //数字
        if(ch >= '0' && ch <= '9'){
            return true;
        }
        //小写字母
        else if(ch >= 'a' && ch <= 'z'){
            return true;
        }
        //大写字母
        else if(ch >= 'A' && ch <= 'Z'){
            //转换为小写
            ch += 32;
            return true;
        }
        return false;
    }

    bool isPalindrome(string s){
        int i,j;
        int len = s.length();
        if(len == 0){
            return true;
        }
        string str = "";
        //去掉非数字字母字符
        for(i = 0; i < len; i++){
            if(isStr(s[i])){
                str += s[i];
            }
        }
        len = str.length();
        for(i = 0,j = len - 1; i < j; i++,j--){
            if(str[i] != str[j]){
                return false;
            }
        }
        return true;
    }
};
int main() {
    bool result;
    string str = "A man, a plan, a canal: Panama";
    //string str = "race a car";
    Solution solution;
    result = solution.isPalindrome(str);
    if(result){
        printf("This is a Palindrome\n");
    }
    else{
        printf("sorry\n");
    }
    return 0;
}







目录
相关文章
|
存储 SQL 算法
LeetCode 题目 65:有效数字(Valid Number)【python】
LeetCode 题目 65:有效数字(Valid Number)【python】
LeetCode Contest 178-1368. 使网格图至少有一条有效路径的最小代价 Minimum Cost to Make at Least One Valid Path in a Grid
LeetCode Contest 178-1368. 使网格图至少有一条有效路径的最小代价 Minimum Cost to Make at Least One Valid Path in a Grid
LeetCode 409. Longest Palindrome
给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。 在构造过程中,请注意区分大小写。比如 "Aa" 不能当做一个回文字符串。
119 0
LeetCode 409. Longest Palindrome
LeetCode 367. Valid Perfect Square
给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。
144 0
LeetCode 367. Valid Perfect Square
|
索引
LeetCode 336. Palindrome Pairs
给定一组唯一的单词, 找出所有不同 的索引对(i, j),使得列表中的两个单词, words[i] + words[j] ,可拼接成回文串。
232 0
LeetCode 336. Palindrome Pairs
LeetCode 242. Valid Anagram
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。
194 0
LeetCode 242. Valid Anagram
|
算法 索引
LeetCode 214. Shortest Palindrome
给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。
193 0
LeetCode 214. Shortest Palindrome
|
canal
LeetCode 125. Valid Palindrome
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
135 0
LeetCode 125. Valid Palindrome
|
算法
LeetCode 65. Valid Number
验证给定字符串是否可以解释为十进制数。
130 0
LeetCode 65. Valid Number
LeetCode 234. 回文链表 Palindrome Linked List
LeetCode 234. 回文链表 Palindrome Linked List