博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[C# 开发技巧]如何使不符合要求的元素等于离它最近的一个元素
阅读量:6534 次
发布时间:2019-06-24

本文共 1669 字,大约阅读时间需要 5 分钟。

一、问题描述

今天在MSDN论坛中看到这样的一个问题,觉得非常锻炼思维能力,所以这里记录下来作为备份,题目的要求是这样的:

假设有一组字符串数组{"0","0","1","2","3",“0”,"4","0","0"},如何查找使0等于离它最近的且不为0的元素,如果离它最近的不为0的元素有两个,则等于上一个元素,即想得到重新赋值后这样的数组{"1","1","1","2","3",“3”,"4","4","4"}

二、实现思路

这里的实现思路摘自论坛中 的回复,实现思路为:

  • 1. 首先对数组里面的数字进行一次遍历,如果当前的值不为“0”把值添加进的结果数组中,否则对它进行处理。

  • 2. 处理不为“0”的值的时候,用一种“等距离比较”的方法,找出等距离内的左右2个值,优先看左边的值是否为“0”,如果是的话跳过,如果不是的话将结果数组内的当前值替换为此值。

  • 3. 距离(就是代码里面的j)的最大值为数组长度减去1,遍历的时候注意i-j的值不小于0,i+j的值要小于数组长度。

具体实现代码为:

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();

三、运行结果

06173644-9f904dc0927f4904844e6411002bb438.jpg

转载地址:http://bswdo.baihongyu.com/

你可能感兴趣的文章
【编译打包】curl-loader.el6
查看>>
WebSocket在spring messagemapping下获取httpsession
查看>>
堆栈的简单实现,以及简单操作
查看>>
一套海量在线用户的移动端IM架构设计实践分享(含详细图文)
查看>>
iOS--在TableViewCell中创建UICollectionView
查看>>
Hadoop & HDFS & Hive & HBase关系图
查看>>
IOS 百度地图点聚合使用
查看>>
此地址使用了一个通常用于网络浏览以外的端口。出于安全原因,Firefox 取消了该请求...
查看>>
webpack开发jquery插件——开发环境准备
查看>>
《SQL With ties 的理解 与 》
查看>>
linux常用命令之用户及用户组操作
查看>>
判断图片url是否存在图片
查看>>
企业CIO如何做好免费ERP系统的选型
查看>>
旧版IDEA下载地址
查看>>
【CSS】-----div 和 span的区别
查看>>
Joda-Time 简介
查看>>
为什么说JAVA的运行与计算机硬件平台无关?
查看>>
Redkale 入门教程 01 -- Hello Word!
查看>>
用grunt搭建自动化的web前端开发环境-完整教程
查看>>
LinuxShell 首字母大写
查看>>