示例 1:
輸入: "a man, a plan, a canal: panama"
輸出: true
示例 2:
輸入: "race a car"
輸出: false
大致思路就是把字串的第乙個字母字元和最後乙個字母字元作比較,符合則雙方向中間移動,乙個比較,有不符合的則不是回文串。這裡遇見特殊字元(比如逗號冒號)直接再往後走一步,遇見空格也是,還有大小寫也是不區分的。可以借助函式來實現這些功能,簡單介紹一哈:
函式 int ispunct(int c)檢查所傳的字元是否是標點符號字元,(c庫)標頭檔案,如果 c 是乙個標點符號字元,則該函式返回非零值(true),否則返回 0(false)。
**函式int isspace ( int c )**檢查乙個字串是否為空白字元。(c庫)標頭檔案,返回值為非零(真)表示c是空白符,返回值為零(假)表示c不是空白符。
**函式int tolower ( int c )**用來將大寫字母轉換為小寫字母。如果轉換成功,那麼返回與 c 對應的小寫字母;如果轉換失敗,那麼直接返回 c(值未變)。注意,返回值為 int 型別,你可能需要隱式或者顯式地將它轉換為 char 型別。與之對應是函式int toupper(int c)用來將小寫字母轉換為大寫字母。如果轉換成功,那麼返回與 c 對應的大寫字母;如果轉換失敗,那麼直接返回 c(值未變)。
直接上**:
bool ispalindrome
(string s)if(
ispunct
(s[j])||
isspace
(s[j]))
if(tolower
(s[i])==
tolower
(s[j]))
else
return false;
}return i>=j?true:false;
}
驗證回文串
給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。說明 本題中,我們將空字串定義為有效的回文串。示例 1 輸入 a man,a plan,a canal panama 輸出 true示例 2 輸入 race a car 輸出 false個人ac答案 我發現我現在越來越謹慎...
驗證回文串
驗證回文串 題幹 給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。說明 本題中,我們將空字串定義為有效的回文串。示例 1 輸入 a man,a plan,a canal panama 輸出 true示例 2 輸入 race a car 輸出 false解題思路分析以及 ...
驗證回文串
驗證回文串 題目描述 給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。說明 本題中,我們將空字串定義為有效的回文串。示例 1 輸入 a man,a plan,a canal panama 輸出 true 示例 2 輸入 race a car 輸出 false 分析 最簡...