2018年1月31日 星期三

[125] Valid Palindrome

判斷是不是回文
大小寫不計,只看字母跟數字
如果完全沒有符合字母跟數字的也算是YES
(為什麼要這樣定義為什麼~~~搖作者肩膀)
題意不難可是一堆corner case
(是說這跟special case 有什麼不一樣嗎XD)
覺得瑣碎 QQ

Valid Palindrome

bool isAlphanumeric(char *pL)
{
    if (pL[0]<48 || (pL[0]>57 && pL[0] <65)  || (pL[0]>90 && pL[0]<97) || (pL[0] >122))
        return false;
    return true;
}

bool isPalindrome(char* s) {
    if(s==NULL)
        return true;
    char *pL=s;
    char *pR = s+strlen(s) -1;

    while(pL<pR)
    {
        if (!isAlphanumeric(pL))
            pL++;
        else if (!isAlphanumeric(pR))
            pR--;
        else if (strncasecmp(pL++,pR--,1)!=0)
            return false;
    }    
    return true;
}


20240525 更新
奇怪我的腦袋是漿糊Orz

bool isPalindrome(char* s) {
int len = strlen(s);
int l=0; int r=len -1;
while (l<r)
{
if (s[l]>=65 && s[l] <=90)
s[l] += 32;
if (!((s[l] >=97 && s[l] <=122) || (s[l] >=48 && s[l] <=57)))
{
l++;
continue;
}
if (s[r]>=65 && s[r] <=90)
s[r] += 32;
if (!((s[r] >=97 && s[r] <=122) || (s[r] >=48 && s[r] <=57)))
{
r--;
continue;
}
if(s[l]!= s[r])
return false;
l++;
r--;
}
return true;
}

沒有留言:

張貼留言