第一个只出现一次的字符:在字符串中找出第一个只出现一次的字符。如输入“abaccdeff”则输出b
答案:由于题目出现了与字符出现次数相关。我们可以利用一个容器来存放每个字符出现的次数,也就是说这个容器的作用是把一个字符隐射成一个数字。所以我们利用哈希表。
#include <QCoreApplication> #include<iostream> #include<QDebug> char findOnlyOneChar(char *inputString) { if(inputString==NULL) { return ‘\0‘; } const int hashSize=256;//表示256个字符的Assic unsigned int hashTable[hashSize];//哈希容器 //初始化哈希数组 for(unsigned int i=0;i<hashSize;i++) { hashTable[i]=0; } char *inputString1=inputString; while(*(inputString1)!=‘\0‘) { //hashTable[*(inputString1++)]++; //hashTable[*(inputString1)] 如hastTable[‘a‘] ‘a‘会变成ascii码整数值97 hashTable[*(inputString1)]=hashTable[*(inputString1)]+1; inputString1++; } inputString1=inputString; while(*inputString1!=‘\0‘) { if(hashTable[*inputString]==1) { return *inputString; } inputString++; } return ‘\0‘; } int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); test(); std::cout<<findOnlyOneChar("abaccdeff"); system("pause"); return a.exec(); }
时间: 2024-12-24 18:43:28