第一个只出现一次的字符

来源:互联网 发布:创意手机壳 知乎 编辑:程序博客网 时间:2024/06/06 00:23

题目描述

在一个字符串(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;}

0 0
原创粉丝点击