首页 > 代码库 > 判断一个字符串通过变化字符的位置,是否可以组成回文
判断一个字符串通过变化字符的位置,是否可以组成回文
解法就是判断下字符串中是否有某些字符是奇数个,如果这种字符的个数大于1,说明无法组成回文;小于或等于1可以组成回文。
其中用了strlen(),放到for循环里面容易导致程序运行效率下降,比如输入的字符串很大 10^5个字符时
for(int i=0; i<strlen(string); i++)会导致程序运行很慢。改用:
int length = strlen(string); for(int i=0; i<length; i++) 可以很大程度提升效率。
#include <stdio.h>#include <string.h>#include <math.h>#include <stdlib.h>void findPalind(char *arr){ int flag = 0; // Find the required answer here. Print Yes or No at the end of this function depending on your inspection of the string int result[26]; for (int i=0; i<26; i++) { result[i] = 0; } int lenth = (int)strlen(arr); for (int i=0; i<lenth; i++) { int index = (int)*(arr + i) - (int)‘a‘; if (result[index] == 0) { result[index] = 1; } else { result[index] = 0; } } int sum = 0; for (int i=0; i<26; i++) { sum += result[i]; } if (sum >= 2) { flag = 1; } else { flag = 0; } if (flag==0) printf("YES\n"); else printf("NO\n"); return;}int main() { char arr[100001]; scanf("%s",arr); findPalind(arr); return 0;}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。