一道C语言面试题:判断字串是否可以通过重新排列字母使之对称
题目:输入一个字符串,如“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语言面试题:判断字串是否可以通过重新排列字母使之对称的更多相关文章
- python3中判断字串类型
s为字串 s.isalnum() #所有字符都是数字或者字母,为真返回 Ture,否则返回 False. s.isalpha() #所有字符都是字母,为真返回 Ture,否则返回 False. s.i ...
- [笔记]一道C语言面试题:大整数乘法
题目:输入两个数字字符串,如“1234567890”和“987654321”,返回二者相乘的结果字符串,如本例返回为“1219326311126352690”. 来源:某500强企业面试题目 思路:从 ...
- C语言:自定义一个查找字串的功能函数,类似于<string.h>中的strstr()
//自定义一个字符串字串查找标准库函数strstr() #include<stdio.h> #include<string.h> char* myStrstr(char *st ...
- [笔记]一道C语言面试题:IPv4字符串转为UInt整数
题目:输入一个IPv4字符串,如“1.2.3.4”,输出对应的无符号整数,如本例输出为 0x01020304. 来源:某500强企业面试题目 思路:从尾部扫描到头部,一旦发现无法转换,立即返回,减少无 ...
- JS 判断字串字节数,并截取长度
var matchWords; function notifyTextLength() { var inputNum = document.getElement ...
- 一道C语言面试题:得到整数的M进制表示字符串
题目:输入整数n和M,输出n在M进制下的表示字符串.如n=3000,M=16,输出16进制下3000的表示字符串,为“BB8” 来源:某500强企业面试题目 思路:对n取模M,将得到的数字压入栈中,再 ...
- 一道C语言面试题:写一个宏,将16位的整数转为Big Endian
题目:输入16位整数x,如0x1234,将其转为Big Endian格式再输出,此例为输出 0x3412 来源:某500强企业面试题目 思路:将x左移8位得到a,将x右移8位得到b,a+b即为所得 / ...
- Inno Setup:获取isl中的多国语言字串
原文 http://zwkufo.blog.163.com/blog/static/25882512010101041626803/?suggestedreading&wumii 用InnoS ...
- JS判断字符串变量是否含有某个字串的实现方法
JS判断字符串变量是否含有某个字串的实现方法 varCts = "bblText"; if(Cts.indexOf("Text") > 0 ){ aler ...
随机推荐
- eclipse 使用mvn模块化开发
1.创建maven父工程步骤:new-->other-->选择maven project-->next-->勾选create a simple project-->nex ...
- TreeSet与HashSet的区别
Set是java中一个不包含重复元素的collection.更正式地说,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2,并且最多包含一个 null 元素.正如其名称所暗示的, ...
- Android Service 通过 BroadcastReceiver 更新Activity UI
1:MainActivity.java public class MainActivity extends Activity { private TextView tvInfo = null; pri ...
- UESTC_Big Brother 2015 UESTC Training for Graph Theory<Problem G>
G - Big Brother Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) ...
- hdu4393 Throw nails(只用模拟前面500来次,后面根据速度、位置、id值排序即可)
...
- Sublime Text 3 乱码解决
步骤: 在Sublime Text里,按ctrl+`,打开Console,一次性输入如下代码: import urllib.request,os; pf = 'Package Control.subl ...
- Eddy's picture(prime+克鲁斯卡尔)
Eddy's picture Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Tota ...
- CodePen's CSS
p{text-indent:2em;}前端开发whqet,csdn,王海庆,whqet,前端开发专家 翻译自:CodePen's CSS 翻译人员:前端开发whqet,意译为主.不当之处欢迎大家指正. ...
- pureftpd的搭建
1,安装purefptd软件 ftp(file transfer protocol) 文件传输协议 cd /usr/local/src wget https://download.pureftpd ...
- Asp.Net Identity自定义user类的运用,ClaimsIdentity
mvc5自动生成的用户验证是比较好用的,还可以扩展,可是要求code first,目前使用sqlite,支持entity framework,但不支持code first. 只有自已简单模仿一下了.经 ...