如何找出一个字符串中第一个只出现一次的字符
2014-03-24 22:30
197 查看
思路分析:采用hash法来实现,首先申请一个长度为256的表,对每个字符hash计数即可。因为C/C++中的字符有3种类型:char、signed char和unsigned char。char类型的符号是由编译器指定的,一般是有符号的。在对字符进行hash时,应该先将字符转为无符号类型;否则当下标为负值时,就会出现越界访问。此外,还需要一个数组记录当前找到的只出现一次的字符,避免对原字符串进行第二次遍历。
代码如下:
效果如图:
代码如下:
#include "stdafx.h" #include <stdio.h> char GetChar(char str[]) { if (str == NULL) return 0; const int size = 256; unsigned count[size] = { 0 }; char buffer[size]; char *q = buffer; const char* p; for (p = str; *p != 0; p++) { count[(unsigned char)*p]++; if (count[(unsigned char)*p] == 1) { *q = *p; q++; } } for (p= buffer; p < q;p++) if (count[(unsigned char)*p] == 1) return *p; return 0; } int main() { printf("%c\n", GetChar("abac")); getchar(); return 0; }
效果如图:
相关文章推荐
- 【100题】找出一个字符串中第一个只出现一次的字符
- 找出一个字符串中第一个只出现一次的字符
- 找出一个字符串中第一个只出现一次的字符
- [剑指Offer-字符串]请实现一个函数用来找出字符流中第一个只出现一次的字符。
- [剑指Offer-字符串]请实现一个函数用来找出字符流中第一个只出现一次的字符。
- 找出一个字符串中,第一个只出现一次的字符
- 【C语言】找出一个字符串中第一个只出现一次的字符
- 给定一个字符串,找出其中第一个只出现了一次的字符
- 用最少的代码找出一个字符串中第一个不重复出现(即只出现一次)的字符
- 如何找出一个字符串中第一次且只出现一次的字符
- AS3 面试题35 在一个字符串中找出第一个只出现一次的字符
- 华为OJ ---找出字符串中第一个只出现一次的字符(java实现)
- 华为OJ——找出字符串中第一个只出现一次的字符
- 在字符串中找出第一个只出现一次的字符。经典C语言例题
- 【华为 OJ】找出字符串中第一个只出现一次的字符
- 每天学习一点编程(5)(在一个字符串中找到第一个只出现一次的字符)
- 在一个字符串中找到第一个只出现一次的字符。
- 【C语言】在字符串中找出第一个只出现一次的字符。 如输入“abaccdeff”,则输出'b'。
- 华为oj初级 找出字符串中第一个只出现一次的字符
- 【笔试题】C语言:在字符串中找出第一个只出现一次的字符。如输入“abaccdeff”,则输出'b'。