重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
今天在MSDN论坛中看到这样的一个问题,觉得非常锻炼思维能力,所以这里记录下来作为备份,题目的要求是这样的:
创新互联-专业网站定制、快速模板网站建设、高性价比松江网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式松江网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖松江地区。费用合理售后完善,十多年实体公司更值得信赖。
假设有一组字符串数组{"0","0","1","2","3",“0”,"4","0","0"},如何查找使0等于离它最近的且不为0的元素,如果离它最近的不为0的元素有两个,则等于上一个元素,即想得到重新赋值后这样的数组{"1","1","1","2","3",“3”,"4","4","4"}
这里的实现思路摘自论坛中 zjyh26的回复,实现思路为:
具体实现代码为:
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();