UC算法筆試題

 

      說實話,昨天UC的筆試題基本全是基礎,可是太基礎,直接致使不少都不能肯定了。看來無論找工做仍是找實習,必定要複習到位。好在我也一直是抱着打醬油的味道,實習與否不是特別在乎,不然真心要鄙視死本身啦。html

      好的,言歸正傳,題目是一道經典的題目:在一個字符串中找到第一個只出現一次的字符。要求算法

     一、必須用C/C++編寫代碼。spa

     二、不能使用嵌套的for/while循環。code

     看到這道題時,我坑爹的當作不能使用for/while循環了。我當時想的是,要遍歷字符串不能使用for/while,除非遞歸和使用goto語句,不然這幾乎是不可能的(若是能夠,請點明)。以爲題目應該不會這麼變態吧,遲遲不肯動筆,後來知道人家說的是嵌套好很差。好的,思路出來了(後來才知道網上一堆這樣的題目)。htm

     一、暴力求解,複雜度爲O(n*n).必然會使用到雙循環。否決!blog

     二、排序解決,能夠。複雜度也下降,各類排序算法見本博博文。各類內部排序算法排序

     三、哈希表的方式,不知道爲何,我對哈希表的方式情有獨鍾,不少算法個人第一反應都是哈希。O(∩_∩)O哈哈~。昨天的算法代碼以下:遞歸

     四、固然,還有第四種解決方式,用二進制的方式,用兩個位表示一個字符,掃描。感受和哈希表的方式差很少。字符串

 1 int HT[256]={0};  2 char getChar(char* str){  3     assert(str!=NULL);  4     for (int i=0;i<strlen(str);i++)  5         HT[(int)str[i]]++;  6     for(int i=0;i<strlen(str);i++){  7         if (HT[(int)str[i]]==1)  8             return str[i];  9  } 10     return NULL; 11 }

       看到博文的各路大仙,除了以上四種方式,還有其餘什麼求解方式,求指點。get

      

    參考文獻:真心無

    版權全部,歡迎轉載,可是轉載請註明出處:瀟一

相關文章
相關標籤/搜索