[C# 开发技巧]如何使不符合要求的元素等于离它最近的一个元素
一、问题描述
今天在MSDN论坛中看到这样的一个问题,觉得非常锻炼思维能力,所以这里记录下来作为备份,题目的要求是这样的:
假设有一组字符串数组{"0","0","1","2","3",“0”,"4","0","0"},如何查找使0等于离它最近的且不为0的元素,如果离它最近的不为0的元素有两个,则等于上一个元素,即想得到重新赋值后这样的数组{"1","1","1","2","3",“3”,"4","4","4"}
二、实现思路
这里的实现思路摘自论坛中 zjyh16的回复,实现思路为:
具体实现代码为:
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();
三、运行结果
如果您认为这篇文章还不错或者有所收获,您可以通过右边的“打赏”功能 打赏我一杯咖啡【物质支持】,也可以点击右下角的【店长推荐】按钮【精神支持】,因为这两种支持都是我继续写作,分享的最大动力


【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构