一.題目描述
二.解題技巧<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwPtXitcDM4r+8suy72M7Eyv2jqHBhbGluZHJvbWWjqaOs1eLSu7jFxO7G8NS009rU2sr90afW0NK7wODK/dfWo6zV4sDgyv3X1tO109DV4tH5tcTM2NX3o7o8L3A+DQo8cD7J6G7Kx9K7yM7S4tfUyLvK/aGjyPS9q261xLj3zrvK/dfWPHN0cm9uZz63tM/yxcXB0Dwvc3Ryb25nPsv5tcPX1Mi7yv1uMdPrbs/gtcijrNTys8ZuzqrSu7vYzsTK/aGjwP3I56OsyPRuPTEyMzQzMjGjrNTys8ZuzqrSu7vYzsTK/aO7tavI9G49MTIzNDU2N6Os1PJusrvKx7vYzsTK/aGjPC9wPg0KPHA+zazA7aOsv8nS1Lao0uXTos7EL9bQzsS1xLvYzsTK/aOsuMXE7rrN0tTJz7XEwODLxqOssb7M4r7Nyse87LLi19a3+7Suyse38c6qu9jOxMr9oaPT68r919a72M7EsrvNrLXEysejrMzixL/W0Lj4s/a1xNOizsS+5NfTL7bM0++w/Lqsv9W48bywseq147f7usWjrNLytMvQ6NKq1NrL47eoyei8xsqxvNO24NK7suPF0LbPo6y/ycTcu+HTw7W90tTPwrqvyv2jujwvcD4NCjxwcmUgY2xhc3M9"brush:java;">
isalpha() // 如果參數是一個字母,返回一個非零數;否則返回為0
isalnum() // 如果參數是一個字母或數字,返回一個非零數;否則返回為0
isdigit() // 如果參數是一個數字(0-9)返回一個非零數;否則返回為0
若不要求區分字符串的大小寫問題,可以加入以下函數:
transform(string.begin(),string.end(),string.begin(),toupper); // 將字符串中的內容轉換為大寫字母
transform(string.begin(),string.end(),string.begin(),tolower); // 將字符串中的內容轉換為小寫字母
題目說明,空字符串也可判定為回文,除此之外,該題目並沒有很復雜的邏輯問題和邊界條件。
三.示例代碼
#include
#include
using std::string;
class Solution
{
public:
bool validPalindrome(string s)
{
if (s == )
return true;
auto index_start = s.begin(), index_end = prev(s.end());
while (index_start < index_end)
{
if (!isalpha(*index_start))
index_start++;
else if (!isalpha(*index_end))
index_end--;
else if (*index_start == *index_end)
{
index_start++;
index_end--;
}
else return false;
}
return true;
}
};
四.一個示例結果
輸入回文字符串:
輸入非回文字符串: