题目:输入一个字符串,如“adcaeceeed”,判断是否可以通过重新排列使之可以输出对称字符串,如本例可以输出“adceeeecda”,返回True。

来源:某500强企业面试题目

思路:扫描字串,对每个字符出现的次数累加,如果次数为奇数的字符个数不超过1个,则返回True,否则返回False

#include "stdio.h"
#include "stdlib.h"
#include "string.h"

//----------------------------------------
// 判断字串是否可以重新排列字母,使之对称
// 如输入"abab",可以得到"abba",则输出 True
// 如输入"abc",则输出 False
//----------------------------------------
bool CheckIfCanBeSymmetric(char *str) {
  // 扫描字串,对每个字符出现的次数累加,如果次数为奇数的字符个数不超过1个,则返回True,否则返回False
  ;
  ;
  ] = {};     // 对ASCII码每个字符对应一个计数器

  if (str == NULL) return false;
  ) return true;

  // 扫描字串,对每个字符对应的计数器++
  ; i < strlen(str); i++)
    CountList[str[i]]++;

  // 检查计数器列表,如果有超过1个奇数,则返回 False
  , n = ; i < ; i++) {
     == ) n++;

    ) return false;
  }

  return true;
}

//-------------------------------------------------------------------------

void TestCheckIfCanBeSymmetric(void) {
  int n;
  char s1[] = "ab--++++ca@@bc!!!!~~";
  char s2[] = "abcbc";
  char s3[] = "abbc";
  char s4[] = "";

  printf("%s is %d\n", s1, CheckIfCanBeSymmetric(s1));
  printf("%s is %d\n", s2, CheckIfCanBeSymmetric(s2));
  printf("%s is %d\n", s3, CheckIfCanBeSymmetric(s3));
  printf("%s is %d\n", s4, CheckIfCanBeSymmetric(s4));
}

//-------------------------------------------------------------------------

int main(int argc, char *argv[]) {
  TestCheckIfCanBeSymmetric();

  getchar();
  ;
}

一道C语言面试题:判断字串是否可以通过重新排列字母使之对称的更多相关文章

  1. python3中判断字串类型

    s为字串 s.isalnum() #所有字符都是数字或者字母,为真返回 Ture,否则返回 False. s.isalpha() #所有字符都是字母,为真返回 Ture,否则返回 False. s.i ...

  2. [笔记]一道C语言面试题:大整数乘法

    题目:输入两个数字字符串,如“1234567890”和“987654321”,返回二者相乘的结果字符串,如本例返回为“1219326311126352690”. 来源:某500强企业面试题目 思路:从 ...

  3. C语言:自定义一个查找字串的功能函数,类似于<string.h>中的strstr()

    //自定义一个字符串字串查找标准库函数strstr() #include<stdio.h> #include<string.h> char* myStrstr(char *st ...

  4. [笔记]一道C语言面试题:IPv4字符串转为UInt整数

    题目:输入一个IPv4字符串,如“1.2.3.4”,输出对应的无符号整数,如本例输出为 0x01020304. 来源:某500强企业面试题目 思路:从尾部扫描到头部,一旦发现无法转换,立即返回,减少无 ...

  5. JS 判断字串字节数,并截取长度

    var matchWords;         function notifyTextLength() {             var inputNum = document.getElement ...

  6. 一道C语言面试题:得到整数的M进制表示字符串

    题目:输入整数n和M,输出n在M进制下的表示字符串.如n=3000,M=16,输出16进制下3000的表示字符串,为“BB8” 来源:某500强企业面试题目 思路:对n取模M,将得到的数字压入栈中,再 ...

  7. 一道C语言面试题:写一个宏,将16位的整数转为Big Endian

    题目:输入16位整数x,如0x1234,将其转为Big Endian格式再输出,此例为输出 0x3412 来源:某500强企业面试题目 思路:将x左移8位得到a,将x右移8位得到b,a+b即为所得 / ...

  8. Inno Setup:获取isl中的多国语言字串

    原文 http://zwkufo.blog.163.com/blog/static/25882512010101041626803/?suggestedreading&wumii 用InnoS ...

  9. JS判断字符串变量是否含有某个字串的实现方法

    JS判断字符串变量是否含有某个字串的实现方法 varCts = "bblText"; if(Cts.indexOf("Text") > 0 ){ aler ...

随机推荐

  1. basename $0的用法

    basename 从文件名中去掉路径信息, 只打印出文件名. 结构 basename $0 可以让脚本知道它自己的名字, 也就是, 它被调用的名字. 可以用来显示用法信息, 比如如果你调用脚本的时候缺 ...

  2. Android Service 通过 BroadcastReceiver 更新Activity UI

    1:MainActivity.java public class MainActivity extends Activity { private TextView tvInfo = null; pri ...

  3. NOI十连测 第五测 T1

    #include<cstdio> #include<cstring> #include<cmath> #include<iostream> #inclu ...

  4. MFC界面开发(QQ透明皮肤:多层算法,一键适配各种背景 )

    http://blog.csdn.net/kent19900125/article/category/1368203/3 QQ透明皮肤:多层算法,一键适配各种背景 . http://blog.csdn ...

  5. iOS开发之property属性介绍

    大家都知道@property和@synthesize可以自动生成某个类成员变量的存取方法,但可能对property中的一些属性不是很了解,网上的一些介绍有的不是很正确,感觉会误导新手,于是准备详细介绍 ...

  6. B-JUI(Best jQuery UI) 前端框架

    From :http://b-jui.com/大略看了下还不错,收藏之.

  7. Combination Sum 解答

    Question Given a set of candidate numbers (C) and a target number (T), find all unique combinations ...

  8. 算法(Algorithm)是什么?

    我们用煎蛋来打个比方.煎蛋的一般步骤是: 1.>取煎锅. 2.>取油. ->我们有油吗? ****有,把油倒入煎锅. ****没有,我们要去买油吗? #########要买,出去买油 ...

  9. poj1833 排列

                                                                                                         ...

  10. JDK5新特性之线程同步集合(五)

    一. 传统集合: 传统方式下的Collection在迭代集合时, 不同意对集合进行改动: public class CollectionModifyExceptionTest { public sta ...