[C#開發(fā)技巧]如何使不符合要求的元素等于離它最近的一個元素

一、問題描述

今天在MSDN論壇中看到這樣的一個問題,覺得非常鍛煉思維能力,所以這里記錄下來作為備份,題目的要求是這樣的:

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比松江網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式松江網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋松江地區(qū)。費用合理售后完善,十多年實體公司更值得信賴。

假設(shè)有一組字符串數(shù)組{"0","0","1","2","3",“0”,"4","0","0"},如何查找使0等于離它最近的且不為0的元素,如果離它最近的不為0的元素有兩個,則等于上一個元素,即想得到重新賦值后這樣的數(shù)組{"1","1","1","2","3",“3”,"4","4","4"}

二、實現(xiàn)思路

這里的實現(xiàn)思路摘自論壇中 zjyh26的回復(fù),實現(xiàn)思路為:

  • 1. 首先對數(shù)組里面的數(shù)字進行一次遍歷,如果當前的值不為“0”把值添加進的結(jié)果數(shù)組中,否則對它進行處理。

  • 2. 處理不為“0”的值的時候,用一種“等距離比較”的方法,找出等距離內(nèi)的左右2個值,優(yōu)先看左邊的值是否為“0”,如果是的話跳過,如果不是的話將結(jié)果數(shù)組內(nèi)的當前值替換為此值。

  • 3. 距離(就是代碼里面的j)的最大值為數(shù)組長度減去1,遍歷的時候注意i-j的值不小于0,i+j的值要小于數(shù)組長度。

具體實現(xiàn)代碼為:

string[] s = new String[9] { "0", "0", "1", "0", "0", "0", "4", "0", "3" };
            string[] result = new string[9];
            for (int i = 0; i < s.Length; i++)
            {
                if (s[i] != "0")
                {
                    result[i] = s[i];
                    continue;
                }
                // j是距離,初始化距離為1
                for (int j = 1; j < s.Length; j++)
                {           
                    if (i - j >= 0)
                    {
                        // 左邊距離為j的元素不等于0時
                        if (s[i - j] != "0")
                        {
                            result[i] = s[i - j];
                            break;
                        }
                    }
                    if (i + j < s.Length)
                    {
                        // 右邊距離為j的元素不等于0時
                        if (s[i + j] != "0")
                        {
                            result[i] = s[i + j];
                            break;
                        }
                    }
                }
            }
            for (int i = 0; i < result.Length; i++)
            {
                Console.WriteLine(result[i]);
            }
               
            Console.ReadLine();

三、運行結(jié)果

[C# 開發(fā)技巧]如何使不符合要求的元素等于離它最近的一個元素

本文標題:[C#開發(fā)技巧]如何使不符合要求的元素等于離它最近的一個元素
URL標題:http://muchs.cn/article4/jcpeoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、App設(shè)計、網(wǎng)站策劃、App開發(fā)、網(wǎng)站維護、動態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管