zoukankan      html  css  js  c++  java
  • 华为2014机试题(一)

    过几天就要进行华为的机试了,今儿临时抱抱佛脚,在网上找到2014届华为校招的机试题,琢磨了一会儿,贴出来记录下。

    首先感谢一下Hackbuteer提供的题目:http://blog.csdn.net/hackbuteer1/article/details/11132567

    对于第一题,字符过滤。最简单也是最直接的就是HASH。题目规定了输入序列只能为小写字符'a~z'。因此直接开辟一个大小为26的数组用于记录当前字符是否已经出现即可。

    需要注意的问题:

    1. hash数组记得初始化

    2. pOutputStr为字符指针,记得在结尾‘’。以免stackoverflow。

        保险起见,可以在函数起始对pOutputStr初始化,memset(pOutputStr,0,sizeof(pOutputStr));

    第二题 字符串压缩,整理题意之后,就是将连续出现的字符进行个数统计,如果大于1,则先将重复长度输出,然后将该字符输出。

    需要注意的问题:

    1. 某个重复字符的长度可能超过10,甚至1000,考虑itoa。

        char buffer[1000];

      memset(buffer,0,sizeof(buffer));

      itoa(num,buffer,10);

    2. 如果某字符并未重复,即个数为1,不需要在pOutputStr中输出‘1X’, 'X'--表示该字符。

    3. pOutputStr 结尾。

    第三题 我的思路和Hackbuteer不太一样,我的思路倾向于流程控制,写的有点冗余。

     1 void setOutput(char *pOutputStr)
     2 {
     3     pOutputStr[0]='0';
     4     pOutputStr[1]='';
     5 }
     6 void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr)
     7 {
     8      /**********************************************************************
     9       *valid input string:
    10       *|[left operator][left space][Operation][right space][right operator]|   
    11       ***********************************************************************/
    12 
    13     // Fnum--left operator;  Fspace-- Format ensurrance
    14     // Op-- operation, +/- ;  
    15     // Sspace-- Format ensurrance; Snum--right operator;
    16     bool Fnum,Fspace,Op,Sspace,Snum;
    17     Fnum=Fspace=Op=Sspace=Snum=false;
    18 
    19     int i=0,num1=0,num2=0,mark=0;
    20     char buffer[100];
    21         
    22     memset(pOutputStr,0,sizeof(pOutputStr));
    23 
    24     // get first num
    25     while(i<lInputLen && pInputStr[i]>='0'&& pInputStr[i]<='9')
    26     {
    27         if(Fnum==false) Fnum=true;
    28         num1 = num1*10 + pInputStr[i] -'0';
    29         i++;
    30     }
    31     if(Fnum==false || i==lInputLen)
    32     {
    33         setOutput(pOutputStr);
    34         return;
    35     }
    36     //get first space
    37     if(pInputStr[i]== ' ')
    38     {
    39         if(Fspace == false) Fspace=true;
    40         i++;
    41     }
    42     if(Fspace==false || i==lInputLen)
    43     {
    44         setOutput(pOutputStr);
    45         return;
    46     }
    47     // get operator +/-
    48     if(pInputStr[i]== '+'|| pInputStr[i]=='-')
    49     {
    50         if(Op == false) Op=true;
    51         if(pInputStr[i]=='+') mark=1;
    52         else mark=2;
    53         i++;
    54     }
    55     if(Op==false || i==lInputLen)
    56     {
    57         setOutput(pOutputStr);
    58         return;
    59     }
    60     // get second space
    61     if(pInputStr[i]== ' ')
    62     {
    63         if(Sspace == false) Sspace=true;
    64         i++;
    65     }
    66     if(Sspace==false || i==lInputLen)
    67     {
    68         setOutput(pOutputStr);
    69         return;
    70     }
    71     // get second num
    72     while(i<lInputLen && pInputStr[i]>='0'&& pInputStr[i]<='9')
    73     {
    74         if(Snum==false) Snum=true;
    75         num2 = num2*10 + pInputStr[i] -'0';
    76         i++;
    77     }
    78     if(Snum==false || i<lInputLen)
    79     {
    80         setOutput(pOutputStr);
    81         return;
    82     }
    83     if(mark==1) num1+=num2;
    84     else num1-=num2;
    85     memset(buffer,0,sizeof(buffer));
    86     itoa(num1,buffer,10);
    87     strcpy(pOutputStr,buffer);
    88 }    

    转载请注明出处: http://www.cnblogs.com/double-win/ 谢谢!

  • 相关阅读:
    博客搬家了,新域名dinphy.wang
    Win7 SP1 32位 旗舰版 IE8 快速稳定 纯净优化 无人值守 自动激活 20170518
    Win7 SP1 64位 旗舰版 IE8 快速稳定 纯净优化 无人值守 自动激活 20180604
    红米3 TWRP-3.2.1-0(android_7.1.2_r29) 刷8.1不提示错误 刷MIUI不再卡屏 修复无系统重启问题 更新于20180316
    SudaMod-81.0 / crDroidAndroid-8.1(android-8.1.0_r20)红米3 2018年5月3日更新
    windows 10专业版14393.447 64位纯净无广告版系统 基于官方稳定版1607制作 更新于20161112
    Deepin 15.5上安装 Node.js
    在github上搭建个人博客
    Deepin 系统下安装VMware并激活
    Windows 10 Version 1803 (Updated March 2018) MSDN 镜像下载
  • 原文地址:https://www.cnblogs.com/double-win/p/3811567.html
Copyright © 2011-2022 走看看