找出第一个只出现一次的字符
生活随笔
收集整理的這篇文章主要介紹了
找出第一个只出现一次的字符
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
在一個字符串中找到第一個只出現(xiàn)一次的字符。如輸入abaccdeff,則輸出b
題目很簡單
用一個int 數(shù)組,全部初始化為-1.
遍歷字符串,如果值為-1,就將值改為字符串的下標,否則設(shè)為-2
然后再掃描一遍這個數(shù)組,找到大于等于0并且最小值即可
有一種方法只要掃描一遍。
GetFirstOnce(const char* szString) {assert(NULL != szString);int ChrToFreq[256];memset(ChrToFreq, 0, sizeof(ChrToFreq));char OrderToChr[256];//記錄字符第一次出現(xiàn)的次序memset(OrderToChr, 0, sizeof(OrderToChr));int nIter = 0;int nRet = 0;//指向至今為止,第一次只出現(xiàn)一次的字符while (0 != *szString){ChrToFreq[*szString]++;if (1 == ChrToFreq[*szString])OrderToChr[nIter++] = *szString;while(nRet < nIter && ChrToFreq[OrderToChr[nRet]] > 1) nRet++;szString++;}if (nRet == nIter) return 0;return OrderToChr[nRet]; }
總結(jié)
以上是生活随笔為你收集整理的找出第一个只出现一次的字符的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 链接二叉树中同一层的节点
- 下一篇: 欧拉回路和哈密尔顿回路