leet125. 驗證迴文串

給定一個字符串,驗證它是否是迴文串,只考慮字母和數字字符,可以忽略字母的大小寫。

說明:本題中,我們將空字符串定義爲有效的迴文串。

示例 1:

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

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

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/valid-palindrome
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。

/**
Problem:

    給定一個字符串,驗證它是否是迴文串,只考慮字母和數字字符,可以忽略字母的大小寫。

說明:
    本題中,我們將空字符串定義爲有效的迴文串。
    @author :Gallery
**/
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
/**
思路一: 設定兩個指針遍歷數組,首先判定是否
*/
bool isPalindrome(char * s){
    int len = strlen(s);
    ///判0
    if (0==len)
        return true;
    ///循環處理
    int i,j;
    ///大小寫轉換,本處暫時不採用轉換!!!!!!注意存在一個問題數字0和大寫P,也能通過邏輯,因此最內部判斷分開處理數字和字母
    ///讀者進行大小寫轉換改變一下邏輯就不會存在此問題

    for( i =0 , j = len-1;i<=j;){
            if(('0'<=s[i]&&'9'>=s[i])||('a'<= s[i] && 'z' >= s[i])||('A'<= s[i] && 'Z' >= s[i])){
                if(('0'<=s[j]&&'9'>=s[j])||('a'<= s[j] && 'z' >= s[j])||('A'<= s[j] && 'Z' >= s[j])){
                        if(('0'<=s[j]&&'9'>=s[j])||('0'<=s[i]&&'9'>=s[i])){
                            if(s[i] == s[j]){
                                i++;
                                j--;
                            }else{
                                return false;
                            }
                        }else if(s[i] == s[j] || s[i]+ 32==s[j]||s[j]+32 == s[i]){
                            i++;
                            j--;
                        }else{
                        return false;
                        }

//                    if(s[i] == s[j] || s[i]+ 32==s[j]||s[j]+32 == s[i]){
//                           printf("\ns[%d] == %c  s[%d] ==%c",i+1,s[i],j+1,s[j]);
//                        i++;
//                        j--;
//
//                    }else{
//                        printf("\n##########\ns[%d] == %c  s[%d] ==%c",i+1,s[i],j+1,s[j]);
//                        return false;
//                    }
                }else{
                    j--;
                   continue;
                }
            }else{
                i++;
               continue;
            }

    }

    return true;

}


int main(void){
    char arr[] = "A man, a plan, a canal: Panama";
    char  arr1[] = "race a car";
    char arr2[]= "";
    char arr3[] = "Op";
    char arr4[] = "0p";
    char arr5[] = "a";
    char arr6[] ="0P";
    char a = '0';
    char b = 'A';

    bool result  = isPalindrome(arr6);

    printf("\n%d",result);

return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章