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

      

    参考文献:真心无

    版权全部,欢迎转载,可是转载请注明出处:潇一

相关文章
相关标签/搜索