在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
2015-10-23 10:11
441 查看
在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
char FirstOnce(char* sz)
{
if (!sz || *sz = 0) return '\0';
unsigned short bm[256] = {0};
unsigned short m = 0;
while (*sz) {
if (!bm[*sz]&0xFF) {
bm[*sz] = 0x0;
bm[*sz] |= 0x01;
bm[*sz] |= (++m) << 8;
}
else {
bm[*sz] &= ~0xFF;
bm[*sz] |= 0x02;
}
}
unsigned short min = 0xFFFF;
char c = '\0';
for (int i=0; i<256; i++) {
if (bm[i] & 0xFF != 0x01) continue;
if (min > bm[i] & 0xFF00 >> 8) {
min = bm[i] & 0xFF00 >> 8;
c = i;
}
}
return c;
}
char FirstOnce(char* sz)
{
if (!sz || *sz = 0) return '\0';
unsigned short bm[256] = {0};
unsigned short m = 0;
while (*sz) {
if (!bm[*sz]&0xFF) {
bm[*sz] = 0x0;
bm[*sz] |= 0x01;
bm[*sz] |= (++m) << 8;
}
else {
bm[*sz] &= ~0xFF;
bm[*sz] |= 0x02;
}
}
unsigned short min = 0xFFFF;
char c = '\0';
for (int i=0; i<256; i++) {
if (bm[i] & 0xFF != 0x01) continue;
if (min > bm[i] & 0xFF00 >> 8) {
min = bm[i] & 0xFF00 >> 8;
c = i;
}
}
return c;
}
相关文章推荐
- Struts2 中的值栈的理解
- linux 安装memcached
- RESTful的理解
- ASP编码必备的8条原则
- Delete Duplicate Emails
- C++使用ADO访问Oracle返回结果集(REF CURSOR)存储过程
- 目录
- 医生告诉你吃什么祛湿
- Manacher算法:求解最长回文字符串,时间复杂度为O(N)
- java四种权限修饰符
- html5动画基础 Demo(div运动)
- Mysql 存储引擎中InnoDB与Myisam的主要区别
- MyBatis插入时候获取自增主键方法
- C# Window编程随记——两个常用的写文件的方法
- No usable Android build tools found. Highest installed version is xx; minimum version required is 19
- 为什么加班的总是你,程序员?
- [LeetCode]34. Add Binary二进制相加
- 正则表达式
- 使用windbg排查各种应用程序报错
- windows numpy包安装