判断给定的字符串是否为回文字符串,忽略非数字和字母字符,比如:“A man, a plan, a canal: Panama"是回文字符串,但是"race a car"不是回文字符串。解析:设置俩个指针,分别指向字符串的首部和尾部,当这两个指针指向的是数字和字符时,判断这两个指针指向的字符和数字是否相等,如果某个指针指向的不是字符和数字,我们更新该指针,直到它指向字符和数字为止。isalnum函数判断当前字符是否为字母和数字。tolower函数把当前字母转换为小写字母。bool equalChar(char ch1, char ch2) { ch1 = tolower(ch1); ch2 = tolower(ch2); return ch1 == ch2; } bool isPalindrome(string s) { int start = 0; int last = s.size() - 1; while (start < last) { while (start < last && !isalnum(s[start])) { start++; } while (start < last && !isalnum(s[last])) { last--; } if (!equalChar(s[start++], s[last--])) return false; } return true; }
回文字符串
最新推荐文章于 2024-04-30 06:45:00 发布