程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> [C# 開發技巧]如何使不符合要求的元素等於離它最近的一個元素

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

編輯:C#入門知識

一、問題描述

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

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

二、實現思路

這裡的實現思路摘自論壇中 zjyh16的回復,實現思路為:

  • 1. 首先對數組裡面的數字進行一次遍歷,如果當前的值不為“0”把值添加進的結果數組中,否則對它進行處理。
  • 2. 處理不為“0”的值的時候,用一種“等距離比較”的方法,找出等距離內的左右2個值,優先看左邊的值是否為“0”,如果是的話跳過,如果不是的話將結果數組內的當前值替換為此值。
  • 3. 距離(就是代碼裡面的j)的最大值為數組長度減去1,遍歷的時候注意i-j的值不小於0,i+j的值要小於數組長度。

具體實現代碼為:

  [] s =  String[] { , , , , , , , , [] result =  [ ( i = ; i < s.Length; i++ (s[i] != =
                 ( j = ; j < s.Length; j++ (i - j >= 
                         (s[i - j] != = s[i - (i + j <
                         (s[i + j] != = s[i + ( i = ; i < result.Length; i++

三、運行結果

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved