415. 有效回文串

作者: 和蔼的zhxing | 来源:发表于2018-01-25 20:53 被阅读9次

    给定一个字符串,判断其是否为一个回文串。只包含字母和数字,忽略大小写。

    注意事项

    你是否考虑过,字符串有可能是空字符串?这是面试过程中,面试官常常会问的问题。

    在这个题目中,我们将空字符串判定为有效回文。

    样例

    "A man, a plan, a canal: Panama" 是一个回文。

    "race a car" 不是一个回文。

    先处理再判定

    忽略掉标点和空格,然后再判定是否是回文串。题目要求忽略大小写,所以把字母全部转换为大写或者小写。
    isalnum(c) 可以判断是否为数字或者字母。
    toupper(c) 如果c是小写,转换为大写。否则原样输出。
    tolower(c) 如果c是大写,转换为小写。否则原样输出。
    另外,考虑特殊情况空字符串认为是回文串。

    
     bool isPalindrome(string &s) {
            if(s.empty())
                return true;
            string res;
            for(auto ss:s)
            {
                if(isalnum(ss))
                
                res+=toupper(ss);
            }
            auto beg=res.begin();
            auto end=res.end()-1;
            for(int i=0;i<res.size()/2;i++)
            {
                if(*(beg+i)!=*(end-i))
                    return false;
            }
            return true;
             // write your code here
        }
    

    note另外,正向迭代器和反向迭代器是不能比较大小的,但是同一种有时候是可以比较的。
    对于string和vector的迭代器,支持以下操作:

    标准容器迭代器支持的操作:

    *iter;
    iter->mem;
    iter++;
    iter--;
    iter1==iter2;
    iter1!=iter2;
    

    vector和string的迭代器还支持更多的操作:

    iter+n;
    iter-n;
    iter+=n;
    iter-=n;
    iter1-iter2;   //返回的是一个difference_type,可以赋值给int。
    >,>=,<,<=;   //不等式关系运算符
    

    相关文章

      网友评论

        本文标题:415. 有效回文串

        本文链接:https://www.haomeiwen.com/subject/emjbaxtx.html