求第一个只出现一次的字符(来源于剑指名企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值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值