给定一个字符串,编写一个函数判断是否为某个回文串的排列之一。回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。回文串不一定是字典当中的单词。
示例一:
输入:"tactcoa"
输出:"true"(排列有"tacoat"、"atcocta")
解题思路:
统计字符串中字符出现的次数,若s能构成回文串,则最多只能容许一个字符出现的次数为奇数。
bool canPermutePalindrome(char* s){
int a[128]={0};int cnt=0;int len=strlen (s);for (int i=0;i<len;i++){a[s[i]]++;}for (int i=0;i<128;i++){if (a[i]%2==1){cnt++;}else if (cnt>=2){return false;}}return true;}时间复杂度:O(n)空间复杂度:O(1)
面试题01.04.回文排列
最新推荐文章于 2022-10-12 23:45:58 发布