给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。
解题思路:使用两个指针变量,判别字符是否相同,如果相同则交换,将字符串长度变量k减2。如果k<=1,则该字符串可以成为回文串。
bool canPermutePalindrome(char* s){
int i=0;
int j=1;
int k=strlen(s);
L2:while(*(s+i))
{
while(*(s+j))
{
if(*(s+j)!=*(s+i))
{
j++;
}
else
{
char temp=*(s+j);
*(s+j)=*(s+i+1);
*(s+i+1)=temp;
k=k-2;
i=i+2;
j=i+1;
goto L2;
}
}
i=i+1;
j=i+1;
}
return k<2;
}
本人代码水平比较菜,希望各位谅解,欢迎各位大牛指教。