第一个只出现一次的字符
2015-09-03 19:01
281 查看
题目描述
在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符的位置。若为空串,返回-1#include <iostream> using namespace std; char FirstNoRepeatingChar(char* pString) { if(pString == NULL) return '\0'; const int tableSize = 256; unsigned int HashTable[tableSize]; for(int i= 0; i < 256;i++) { HashTable[i] = 0; } char* pHashKey = pString; while(*pHashKey != '\0') { HashTable[*(pHashKey)]++; pHashKey++; } pHashKey = pString; while(*pHashKey != '\0') { if(HashTable[*(pHashKey)] == 1) return *(pHashKey); pHashKey++; } return '\0'; }
// ====================测试代码==================== void Test(char* pString, char expected) { if(FirstNoRepeatingChar(pString) == expected) printf("Test passed.\n"); else printf("Test failed.\n"); } int main(int argc, char* argv[]) { // 常规输入测试,存在只出现一次的字符 Test("google", 'l'); // 常规输入测试,不存在只出现一次的字符 Test("aabccdbd", '\0'); // 常规输入测试,所有字符都只出现一次 Test("abcdefg", 'a'); // 鲁棒性测试,输入NULL Test(NULL, '\0'); return 0; }
相关文章推荐
- 前端路上的各种问题-javascript—5
- 零基础学C语言 笔记九 字符串
- Codeforces GYM 100114 B. Island 水题
- Java创建线程的两种方法
- WXHL 学习总结连载(八)
- java FutureTask的简单用法示例
- C++中lambda表达式
- 版本控制工具svn
- css 利用媒体查询进行响应式设计
- BM25算法
- Javascript高级程序设计——面向对象之实现继承
- 微软:Win10 Edge以及IE11等主流浏览器2016年初将停止支持RC4加密算法
- CSS选择器总结
- iOS开发之多线程--多线程简单介绍
- hihoCoder挑战赛14 B 赛车
- CF 568A 数学 暴力
- 起泡算法的最佳复杂度O(N)
- mongodb数据库连接池(java版)
- CSS选择器总结
- hihoCoder挑战赛14 A 不等式