Java教程

验证回文串

本文主要是介绍验证回文串,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

 

题目:


给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。

说明:本题中,我们将空字符串定义为有效的回文串。

示例 1:

输入: "A man, a plan, a canal: Panama"
输出: true
示例 2:

输入: "race a car"
输出: false

 

解法1:双指针法

string类型获取长度:str.length()

isalnum() 用以判断字符是否是数字和字母

tolower() 把字母转为小写

思路:设定两个指针,第一个从前往后走,第二个从后往前走,一直走到交汇处,看所指元素是否都一致。

class Solution {
public:
    bool isPalindrome(string s) {
        int len = s.length() - 1;
        int i = 0;
        while(i <= len){
            if(!isalnum(s[i])){
                ++i;
                continue;
            }
            if(!isalnum(s[len])){
                --len;
                continue;
            }

            if(tolower(s[len--]) != tolower(s[i++])){
                return false;
            }
        }
        return true;
    }
};

特征:回文                        解法:前后对比

 

解法2:翻转字符串比较法

思路:翻转字符串,然后比较原字符串和反转后的字符串是否一致

class Solution {
public:
    bool isPalindrome(string s) {
        string str;
        for(int i : s){
            if(isalnum(i)){
                str += tolower(i);
            }
        }

        string str_con(str.rbegin(), str.rend());
        return str_con == str;
    }
};

特征:回文字符串                       解法:string str_con(str.rbegin(), str.rend());

 

 

 

 

 

 

 

 

这篇关于验证回文串的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!