求第一个只出现一次的字符(来源于剑指名企offer)

char FirstRepeatChar(char *inputStr)
{
      if(inputStr==NULL)
          return '\0';

      int tableSize=256;
      int * hashTable=new int[tableSize];
      for(int i=0; i<tableSzie;i++)
         hasTable[i]=0;

      char *pStr=inputStr;
      while(*pStr!='\0')
         hashTable[ *(pStr++) ] ++;
      
      pStr=inputStr;
      char result;
      while(*pStr!='\0')
      {
         if( hashTable[*(pStr++) ]==1 )
         {
             delete hashTable;
             return *(pStr--);
          } 
      }
      delete hashTable;
      return '\0';
}



利用哈希表查找效率为O(1)的优势特点, 把 输入的字符串的每个字符存放在哈系表中;然后便利字符串,查找哈系值为1的索引。该索引就是第一个只出现一次的字符的ASCII值。

你可能感兴趣的:(求第一个只出现一次的字符(来源于剑指名企offer))