今天在MSDN論壇中看到這樣的一個問題,以爲很是鍛鍊思惟能力,因此這裏記錄下來做爲備份,題目的要求是這樣的:c#
假設有一組字符串數組{"0","0","1","2","3",「0」,"4","0","0"},如何查找使0等於離它最近的且不爲0的元素,若是離它最近的不爲0的元素有兩個,則等於上一個元素,即想獲得從新賦值後這樣的數組{"1","1","1","2","3",「3」,"4","4","4"}數組
這裏的實現思路摘自論壇中 zjyh16的回覆,實現思路爲:ide
具體實現代碼爲:get
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();