華為2014筆試演算法題匯總

來源:互聯網
上載者:User


【輸出】 pOutputStr: 輸出字串,空間已經開闢好,與輸入字串等長;

輸入:“afafafaf”     輸出:“af”
輸入:“pppppppp”     輸出:“p”

1、僅壓縮連續重複出現的字元。比如字串"abcbc"由於無連續重複字元,壓縮後的字串還是"abcbc"。
2、壓縮欄位的格式為"字元重複的次數+字元"。例如:字串"xxxyyyyyyz"壓縮後就成為"3x6yz"。

【輸出】 pOutputStr: 輸出字串,空間已經開闢好,與輸入字串等長;

輸入:“adef”     輸出:“adef”
輸入:“pppppppp” 輸出:“8p”


2、若輸入算式格式錯誤,輸出結果為“0”。

【輸出】 pOutputStr: 輸出字串,空間已經開闢好,與輸入字串等長;

輸入:“4 - 7”  輸出:“-3”
輸入:“9 ++ 7”  輸出:“0” 註:格式錯誤

//////////////////////////////////////////////////////////////////////////華為第三題 20:29 - 20:40  #include <iostream>    using namespace std;    void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr)  {   const char *input = pInputStr;         char *output = pOutputStr;   int sum = 0;   int operator1 = 0;   int operator2 = 0;   char *temp = new char[5];   char *ope = temp;   while(*input != ' ') //獲得運算元1   {       sum = sum*10 + (*input++ - '0');   }   input++;   operator1 = sum;   sum = 0;     while(*input != ' ')   {       *temp++ = *input++;   }     input++;   *temp = '\0';     if (strlen(ope) > 1 )   {       *output++ = '0';       *output = '\0';       return;   }     while(*input != '\0') //獲得運算元2   {       sum = sum*10 + (*input++ - '0');   }   operator2 = sum;   sum = 0;     switch (*ope)   {   case '+':itoa(operator1+operator2,pOutputStr,10);       break;   case '-':itoa(operator1-operator2,pOutputStr,10);      break;   default:       *output++ = '0';       *output = '\0';       return;   }  }    int main()  {      char input[] = "4 - 7";      char output[] = "    ";      arithmetic(input,strlen(input),output);      cout<<output<<endl;      return 0;  }  

//華為2014年機試題1:輸入1--50個數字,求出最小數和最大數的和  //輸入以逗號隔開  #include<stdio.h>  #define N 50  void sort(int a[],int n);  int main(void)  {          char str[100];      int a[N]={0};      gets(str);      //要點1:動態輸入1--50個整數,不能確定個數,只能用字串輸入,然後分離出來      int i=0;      int j=0;      int sign=1;      while(str[i]!='\0')      {          if(str[i]!=',')  //輸入時要在半形輸入          {                if(str[i] == '-')    //要點:2:有負整數的輸入              {                 // i++;   //易錯點1                  sign=-1;              }              else if(str[i]!='\0') //不用else的話,負號也會減去‘0’             {                 a[j]=a[j]*10 + str[i]-'0'; //要點3:輸入的可以是多位元               }          }          i++;          if(str[i]==',' || str[i]=='\0')  //這個判斷是在i自加以後          {               a[j]=a[j]*sign;  //易錯點2               sign=1;   ////易錯點3               j++;    //j就是a數組的個數 範圍0到j-1          }          }        sort(a,j);      printf("Max number + Min number = %d",a[0]+a[j-1]);        return 0;  }  void sort(int a[],int n)  //選擇排序  {      int i,j;      int k;      int temp;      for(i=0;i<n-1;i++)      {          k=i;          for(j=i+1;j<n;j++)          {              if(a[k]>a[j])                  k=j;          }          if(i!=k)          {              temp = a[k];              a[k] = a[i];              a[i] = temp;          }      }      for(i=0;i<n;i++)          printf("%-5d",a[i]);      puts("");  }  




相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.