zoukankan      html  css  js  c++  java
  • UC算法笔试题

     

          说实话,昨天UC的笔试题基本全是基础,但是太基础,直接导致很多都不能确定了。看来不管找工作还是找实习,一定要复习到位。好在我也一直是抱着打酱油的味道,实习与否不是特别在意,否则真心要鄙视死自己啦。

          好的,言归正传,题目是一道经典的题目:在一个字符串中找到第一个只出现一次的字符。要求

         1、必须用C/C++编写代码。

         2、不能使用嵌套的for/while循环。

         看到这道题时,我坑爹的看成不能使用for/while循环了。我当时想的是,要遍历字符串不能使用for/while,除非递归和使用goto语句,否则这几乎是不可能的(如果可以,请点明)。觉得题目应该不会这么变态吧,迟迟不愿动笔,后来知道人家说的是嵌套好不好。好的,思路出来了(后来才知道网上一堆这样的题目)。

         1、暴力求解,复杂度为O(n*n).必然会使用到双循环。否决!

         2、排序解决,可以。复杂度也降低,各种排序算法见本博博文。各种内部排序算法

         3、哈希表的方式,不知道为什么,我对哈希表的方式情有独钟,很多算法我的第一反应都是哈希。O(∩_∩)O哈哈~。昨天的算法代码如下:

         4、当然,还有第四种解决方式,用二进制的方式,用两个位表示一个字符,扫描。感觉和哈希表的方式差不多。

     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 }

           看到博文的各路大仙,除了以上四种方式,还有其他什么求解方式,求指点。

          

        参考文献:真心无

        版权所有,欢迎转载,但是转载请注明出处:潇一

     

  • 相关阅读:
    libgdx学习记录12——圆角矩形CircleRect
    libgdx学习记录11——平铺地图TiledMap
    libgdx判断矩形重叠碰撞
    libgdx学习记录10——Particle粒子
    libgdx学习记录9——FreeType,ttf中文显示
    libgdx学习记录8——对话框Dialog
    libgdx学习记录7——Ui
    libgdx学习记录6——动作Action
    libgdx学习记录5——演员Actor
    libgdx学习记录4——舞台Stage
  • 原文地址:https://www.cnblogs.com/xiaoyi115/p/3729269.html
Copyright © 2011-2022 走看看