您好,登录后才能下订单哦!
密码登录
            
            
            
            
        登录注册
            
            
            
        点击 登录注册 即表示同意《亿速云用户服务条款》
        今天在MSDN论坛中看到这样的一个问题,觉得非常锻炼思维能力,所以这里记录下来作为备份,题目的要求是这样的:
假设有一组字符串数组{"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();![[C# 开发技巧]如何使不符合要求的元素等于离它最近的一个元素](http://p_w_picpaths.cnitblog.com/blog/383187/201308/06173644-9f904dc0927f4904844e6411002bb438.jpg)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。