zoukankan      html  css  js  c++  java
  • 判断一个字符串通过变化字符的位置,是否可以组成回文

    解法就是判断下字符串中是否有某些字符是奇数个,如果这种字符的个数大于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
    ");
        else
            printf("NO
    ");
        
        return;
    }
    int main() {
        
        char arr[100001];
        scanf("%s",arr);
        findPalind(arr);
        return 0;
    }
    代码
  • 相关阅读:
    DirectX9:基础篇 第五章 绘制流水线
    他山之石:可以攻玉
    C89:论内存分配问题
    C89:关键字
    MFC:开头篇 介绍
    DirectX9:先导篇 数学基础
    模仿轮播图效果
    text选中后displa出label内容
    ASP.NET页面之间传递值的几种方式
    jquery-delay(),queue()
  • 原文地址:https://www.cnblogs.com/huangzizhu/p/3918801.html
Copyright © 2011-2022 走看看