• [LeetCode 题解]: Valid Palindrome


    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.

    主要考察, cctype.h 的使用:

    可能用到的函数: tolower, toupper, isalpha, isdigit, isalnum。

     1 class Solution {
     2 public:
     3     bool isPalindrome(string s) {
     4         int left=0,right =s.size()-1;
     5         while(left<right)
     6         {
     7             if(!isalnum(s[left]))    
     8                 left++;
     9             else if(!isalnum(s[right]))
    10                 right--;
    11             else
    12             {
    13                 if(tolower(s[left])==tolower(s[right]))
    14                 {
    15                     left++;
    16                     right--;
    17                 }
    18                 else
    19                     return false;
    20             }
    21         }
    22         return true;        
    23     }
    24 };

    可能用到的函数: tolower, toupper, isalpha, isdigit, isalnum。

    补充知识:  cctype 库文件(参考cplusplus: http://www.cplusplus.com/reference/cctype/ )

    函数名 function description 函数说明
    isalnum Check if character is alphanumeric (function ) 查看参数是否为字符或数字
    isalpha Check if character is alphabetic (function ) 查看参数是否为字符
    isblank  Check if character is blank (function ) 查看参数是否为空格
    iscntrl Check if character is a control character (function ) 查看参数是否为控制字符
    isdigit Check if character is decimal digit (function ) 查看参数是否为十进制数字
    isgraph Check if character has graphical representation (function ) 查看参数是否为可显示字符
    islower Check if character is lowercase letter (function ) 查看参数是否为可打印字符
    isprint Check if character is printable (function ) 查看参数是否为小写字符
    ispunct Check if character is a punctuation character (function ) 查看参数是否为标点符号
    isspace Check if character is a white-space (function ) 查看参数是否为空字符
    isupper Check if character is uppercase letter (function ) 查看参数是否为大写字符
    isxdigit Check if character is hexadecimal digit (function ) 查看参数是否为十六进制数字

    具体的ASCII 与 cctype各函数的对应关系如下表: 

    ASCII values characters iscntrl isblank isspace isupper islower isalpha isdigit isxdigit isalnum ispunct isgraph isprint
    x00 .. 0x08 NUL, (other control codes) x                      
    0x09 tab (' ') x x x                  
    0x0A .. 0x0D (white-space control codes:'f','v',' ',' ') x   x                  
    0x0E .. 0x1F (other control codes) x                      
    0x20 space (' ')   x x                 x
    0x21 .. 0x2F !"#$%&'()*+,-./                   x x x
    0x30 .. 0x39 123456789             x x x   x x
    0x3a .. 0x40 :;<=>?@                   x x x
    0x41 .. 0x46 ABCDEF       x   x   x x   x x
    0x47 .. 0x5A GHIJKLMNOPQRSTUVWXYZ       x   x     x   x x
    0x5B .. 0x60 []^_`                   x x x
    0x61 .. 0x66 abcdef         x x   x x   x x
    0x67 .. 0x7A ghijklmnopqrstuvwxyz         x x     x   x x
    0x7B .. 0x7E {|}~                   x x x
    0x7F (DEL) x                      

     转载请注明出处: http://www.cnblogs.com/double-win/ 谢谢!

  • 相关阅读:
    Spring Boot邮件功能
    jenkins自动部署
    spring boot定时任务解析
    类的加载classload和类对象的生成
    排序算法
    Robbin负载均衡
    ActiveMQ消息中间件
    hystrix熔断器
    css3整理--calc()
    css3整理--media
  • 原文地址:https://www.cnblogs.com/double-win/p/3780717.html
Copyright © 2020-2023  润新知