久久综合丝袜日本网手机版,日韩欧美中文字幕在线三区,亚洲精品国产品国语在线,极品在线观看视频婷婷

      <small id="aebxz"><menu id="aebxz"></menu></small>
    1. 一道.NET程序員面試題的遐想

      時間:2022-07-13 14:41:20 面試 我要投稿
      • 相關(guān)推薦

      關(guān)于一道.NET程序員面試題的遐想

      前幾天,同學問了我一道程序員的面試題,題目是 “統(tǒng)計用戶輸入的一串數(shù)字中每個數(shù)字出現(xiàn)的次數(shù)”。

      關(guān)于一道.NET程序員面試題的遐想

      當時看到這個題目,我的第一想法就是:

      1.先判斷用戶輸入的是否是數(shù)字,用if-else語句來判斷;

      2.將用戶輸入的數(shù)字字符串轉(zhuǎn)換成char數(shù)組;

      3.用for循環(huán)遍歷每個字符,根據(jù)switch-case語句來逐一判斷。

      4.再建立一個int數(shù)組來接收判斷后的結(jié)果,最后for循環(huán)輸出。

      該方法的解題代碼如下:

      View Code

      classprogram

      {

      staticvoidMain(string[]args)

      {

      //計算用戶輸入的一串數(shù)字中每個數(shù)字出現(xiàn)的次數(shù)

      Console.WriteLine("請輸入一串數(shù)字");

      stringstr=Console.ReadLine();

      //將字符串轉(zhuǎn)換為字符數(shù)組

      char[]chnum=str.ToCharArray();

      #region判斷用戶輸入的是否是數(shù)字

      for(inti=0;i

      {//判斷每一個字符是否是數(shù)字通過char的方法來判斷

      if(!char.IsNumber(chnum[i]))

      {

      Console.WriteLine("您的輸入有誤,請輸入數(shù)字");

      Console.ReadKey();

      return;

      }

      }

      #endregion

      //定義一個新的數(shù)組來保存計數(shù)

      int[]count=newint[9];

      #regionfor循環(huán)遍歷

      //for循環(huán)遍歷

      for(inti=0;i{

      switch(chnum[i])

      {

      case1:

      count[0]++;

      break;

      case2:

      count[1]++;

      break;

      case3:

      count[2]++;

      break;

      case4:

      count[3]++;

      break;

      case5:

      count[4]++;

      break;

      case6:

      count[5]++;

      break;

      case7:

      count[6]++;

      break;

      case8:

      count[7]++;

      break;

      case9:

      count[8]++;

      break;

      }

      }

      #endregion

      #region循環(huán)輸出

      for(inti=0;i{

      Console.WriteLine("含有的數(shù)字{0}的個數(shù)是:{1}",i+1,count[i]);

      }

      #endregion

      Console.ReadKey();

      }

      }

      運行效果如下:

      不過,這種方法有兩個缺點就是,如果用戶輸入的不是數(shù)字(如字母或符號等),程序會提示錯誤,并退出;再者,也會統(tǒng)計出用戶沒有輸入過的數(shù)字的個數(shù)為0個,如果某些時候不想知道沒有輸入的數(shù)字的個數(shù),這種解法很不合適,而且代碼修改起來也很復(fù)雜。

      新解法: 泛型集合

      碰巧這幾天接觸了泛型集合,沒想到用Dictionary來解這道題是那么的簡單。

      代碼如下:

      View Code

      classprogram

      {

      staticvoidMain(string[]args)

      {

      Console.WriteLine("請輸入數(shù)字");

      stringnumbers=Console.ReadLine();

      //創(chuàng)建集合鍵為數(shù)字char類型值為每個數(shù)字出現(xiàn)的次數(shù)int類型

      Dictionarydict=newDictionary();

      //將數(shù)字字符串轉(zhuǎn)換為單個字符數(shù)組

      char[]chs=numbers.ToCharArray();

      for(inti=0;i{

      //判斷是否是數(shù)字用到char的isnumber方法

      if(char.IsNumber(chs[i]))

      {

      //如果鍵中已含有該數(shù)字,則將其對應(yīng)的值+1,否則不存在,加入鍵中值為1

      if(!dict.ContainsKey(chs[i]))

      {

      //將每個數(shù)字字符作為鍵存入鍵值對中,值初始為1

      dict.Add(chs[i],1);

      }

      else

      {

      //值+1

      dict[chs[i]]++;

      }

      }

      }

      //循環(huán)遍歷鍵值對輸出

      foreach(KeyValuepairitemindict)

      {

      Console.WriteLine("數(shù)字:{0}出現(xiàn)了{1}次。",item.Key,item.Value);

      }

      Console.ReadKey();

      復(fù)制代碼

      可見,簡單的幾行代碼就解決了。

      而且,這種解法完全解決了上面遇到的兩個問題。

      我覺得這個應(yīng)該就是面試官想要的效果吧。(汗。。。不知道我那位同學的面試情況怎么樣。。。)

      寫到這里,我又想到了見過的另一道面試題:“計算字符串中每種字符出現(xiàn)的次數(shù)”。

      這要用我開始想到的那種思路來解得話,我豈不是要寫26個case語句來判斷嗎,汗。。。。不知道面試官要是看到這么多代碼豈不是會當場走人。。。顯然這不是最好的解題辦法。

      還是用泛型集合來解:

      View Code

      classprogram

      {

      staticvoidMain(string[]args)

      {

      //計算字符串中每種字符出現(xiàn)的次數(shù)(面試題)。

      //“WelcometoChina,beijing”,

      //不區(qū)分大小寫,打印“W2”“e2”“o3”……

      /*思路:1將字符串都轉(zhuǎn)換為小寫形式,否則大小寫會算各一個

      *2以字符為鍵每個字符出現(xiàn)的次數(shù)為值建立Dictionary泛型集合

      *3將字符串轉(zhuǎn)換為字符數(shù)組

      *4循環(huán)遍歷每個字符,加入集合中作為鍵,其對應(yīng)的值初始為1

      *5在加入鍵之前做一個判斷,由于集合中的鍵不能重復(fù),所以判斷如果鍵中已經(jīng)還有該字符

      *則不再加入該鍵,只把他的值+1

      *6去除字符串中的空格char.isLetter()如果是字母,進行操作5

      *7總結(jié):主要是泛型集合的應(yīng)用

      */

      //例句:

      //stringsentences="WelcometoChina,beijing";

      Console.WriteLine("請輸入一段字母");

      stringsentences=Console.ReadLine();

      //將字符串都轉(zhuǎn)換為小寫形式

      sentences=sentences.ToLower();

      //建立泛型集合

      Dictionarydict=newDictionary();

      //將字符串變成字符數(shù)組

      char[]chs=sentences.ToCharArray();

      //遍歷每一個字符

      for(inti=0;i{

      //通過char的方法判斷是否為字母,如果為字母,則進行下面的操作,

      //否則不操作

      if(char.IsLetter(chs[i]))

      {

      //如果不包含該鍵,則加入集合中

      if(!dict.ContainsKey(chs[i]))

      {

      //將每個字符加入集合中對應(yīng)鍵,其值初始為1

      dict.Add(chs[i],1);

      }

      else

      {

      //否則,包含該鍵,只將其對應(yīng)的值+1即可值的類型為int

      //dict[chs[i]]=dict[chs[i]]+1;

      dict[chs[i]]++;

      }

      }

      }

      //循環(huán)遍歷輸出集合中的鍵值

      foreach(KeyValuepairkvindict)

      {

      Console.WriteLine("字母:{0}出現(xiàn)了{1}次。",kv.Key,kv.Value);

      }

      Console.ReadKey();

      }

      }

      同樣,代碼很簡單:

      這時,我又突發(fā)奇想想到了另一種情況:

      用戶輸入一串字母和數(shù)字的混合字符串如“ddeieiei4954jjfjdji383ddjeuut3003k”

      統(tǒng)計出每個數(shù)字或字母出現(xiàn)的次數(shù),且數(shù)字在前,字母在后 ,數(shù)字和字母內(nèi)沒有順序要求

      如 數(shù)字 4 出現(xiàn)了 2次

      數(shù)字 3 出現(xiàn)了 4次

      .......

      ........

      字母 d 出現(xiàn)了 5次

      ...........

      當然,最簡單的還是用泛型集合來解了。。。。

      最后來個總結(jié)吧:

      個人認為,遇到一個新的問題的時候,關(guān)鍵是思路,把思路一步一步理順了,就像我們老師說的那樣,知道你要干什么,想好怎樣去做,最后再去寫代碼。不要一上來就敲代碼,思路都沒搞清楚呢,最后肯定是問題多多。

      希望這篇文章可以給像我這樣正在找工作的應(yīng)屆生一些小小的幫助吧!

      (突然覺得在大學里學的那些知識都太簡單了,而且太深了也不講。找工作時真的很無奈啊!!!)


      【一道.NET程序員面試題的遐想】相關(guān)文章:

      2011最新asp.net面試題與答案07-11

      一道騰訊的面試題07-09

      程序員面試題精選07-12

      一道Java面試題,題目如下07-11

      女本 計算機專業(yè)想做net程序員難不難?07-10

      入門級PHP程序員面試題07-09

      一道很不錯的人力資源面試題07-11

      誰有近幾年華為和中興公司的Java程序員面試題07-11

      WAP網(wǎng)絡(luò)與NET網(wǎng)絡(luò)的區(qū)別于定義!07-10

      京東為什么在用.net07-11