方法分享:有序集合分段
1、方法功能描述
有序集合:(A、B、C、D、E、F、G、H、I、J),已经有分段(只有首尾):(A,D),(G、H)。
实现功能:找到其他的分段 (D、G)、(H、J)。
例如比赛轨道,从A地到J地,中间需要经过B、C、D、E、F、G、H、I、J,把轨道分为几段(只有首尾):(A、D)、(D、G)、(G、H)、(H、J)。现在已经有分段(A、D)、(D、G),怎么找到分段(G、H)、(H、J)?
2、代码说明及描述
(1)思想
循环字符串,逐个与子字符串的第一个字符进行比对,
如果子字符串列表中不存在,则添加子字符串,并且把子字符串的第一个字符设为该字符串;
如果子字符串中存在该字符,则取得子字符串的最后一个字符,并且循环跳过该段。
(2)C#代码
1 private List<List<string>> FillMidList(List<string> stringList, List<List<string>> midList) 2 { 3 List<List<string>> rtn = new List<List<string>>(); 4 List<string> strList = null;//Char List 5 string start = string.Empty;//Start Char 6 string end = string.Empty;//End Char 7 bool isFind = false; 8 bool isFindEnd = false;//Find End Char 9 10 for (int i = 0; i < stringList.Count; i++)11 {12 start = stringList[i];13 //If exit char14 foreach (var item in midList)15 {16 if (start == item[0])17 {18 if (isFindEnd == true)19 {20 end = start;21 }22 isFind = true;23 start = item[item.Count - 1];24 break;25 }26 }27 28 if (isFind == true)29 {30 isFind = false;31 //Adjust index32 for (int j = 0; j < stringList.Count; j++)33 {34 if (stringList[j] == start)35 {36 i = j - 1;37 break;38 }39 }40 if (isFindEnd == true)41 {42 strList.Add(end);43 rtn.Add(strList);44 isFindEnd = false;45 end = string.Empty;46 } 47 }48 else49 {50 if (isFindEnd == true)51 {52 //Add the last53 if (start == stringList[stringList.Count - 1])54 {55 strList.Add(start);56 rtn.Add(strList);57 }58 }59 else60 {61 strList = new List<string>();62 strList.Add(start);63 isFindEnd = true;64 }65 }66 }67 68 return rtn;69 }
3、说明
这个功能在做项目的过程中有时会遇到,个人感觉写的有点繁琐,提供拙见供大家探讨。
转载于:https://www.cnblogs.com/sshoub/archive/2011/08/20/2147114.html
方法分享:有序集合分段相关推荐
- 按照姓名升序排序的代码_好程序员Java培训分享Java集合的两种排序方法
好程序员Java培训分享Java集合的两种排序方法,Java集合的工具类Collections中提供了两种排序的方法,分别是: 1.Collections.sort(List list) 2.Coll ...
- php数值相加_PHP+Redis 有序集合实现 24 小时排行榜实时更新
php中文网最新课程 每日17点准时技术干货分享 基本介绍 Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员. 不同的是每个元素都会关联一个 double 类型的分 ...
- php 实时更新内容_PHP+Redis 有序集合实现 24 小时排行榜实时更新
php中文网最新课程 每日17点准时技术干货分享 基本介绍 Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员. 不同的是每个元素都会关联一个 double 类型的分 ...
- Redis 笔记(07)— sorted set 类型(添加、删除有序集合元素、获取分数范围内成员、按score排序、返回集合元素个数)
zset 可能是 Redis 提供的最为特色的数据结构,一方面它是一个 set,保证了内部 value 的唯一性,另一方面它可以给每个 value 赋予一个 score,代表这个 value 的排序权 ...
- redis中的order set 有序集合
redis中的order set 有序集合 命令 1 zadd key score1 value1 score2 value2 .. 添加元素 127.0.0.1:6379> zadd user ...
- Redis-07Redis数据结构--有序集合ZSet
文章目录 概述 有序集合的数据结构 Redis 有序集合的部分命令 spring-data-redis 对有序集合的封装 使用 Spring 操作有序集合 注意 代码 概述 有序集合和集合类似,只是说 ...
- 【python】Python中给List添加元素的4种方法分享
List 是 Python 中常用的数据类型,它一个有序集合,即其中的元素始终保持着初始时的定义的顺序(除非你对它们进行排序或其他修改操作). 在Python中,向List添加元素,方法有如下4种方法 ...
- 为什么redis取出来是null_跳表:为什么Redis一定要用跳表来实现有序集合
上两节我们讲了二分查找算法.当时我讲到,因为二分查找底层依赖的是数组随机访问的特性,所以只能用数组来实现.如果数据存储在链表中,就真的没法用二分查找算法了吗? 实际上,我们只需要对链表稍加改造,就可以 ...
- Java14-day05【集合(Collection常用方法-遍历、List特有方法、List集合子类特点、LinkedList集合的特有功能、ListIterator)】
视频+资料(工程源码.笔记)[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg 提取码:zjxs] Java基础--学习笔记(零起点打开java ...
最新文章
- 齐鲁工业大学计算机读研,齐鲁工业大学考研难吗
- 4月书讯(下)| 美亚4.8星评,又一本口碑相传的著作来了
- 解析Jquery取得iframe中元素的几种方法
- phpstrom中让volt高亮显示
- iOS tableviewcell重用机制避免重复显示
- C# - 简单介绍TaskScheduler
- 2017蓝桥c语言真题,[蓝桥杯][2017年第八届真题]发现环 (C语言代码)------------C语言——菜鸟级...
- .NET 6 的 docker 镜像可以有多小
- SQL数据库不用SQL语句能显示全表的内容_2020别再说你了解数据库了,你搞清楚这些问题了吗?...
- powershell 发邮件
- 远程执行命令不成功的问题
- WebGIS开发培训(ArcGIS API for JavaScript方向)
- 手机便签怎么对待办分类文件夹加密
- php 解析lrc文件格式,C#解析Lrc歌词文件过程详解
- 中级计算机软件师考试试题,计算机水平考试-(a)中级软件设计师下午试题模拟64.doc...
- PE文件加节感染之Win32.Loader.bx.V病毒分析
- mysql安装版要选择_mysql 安装版
- 特斯拉4D成像毫米波雷达与木牛科技早期开源的产品几乎一模一样?
- 【学习笔记】VGG 网络结构
- 试衣网的商业模式很脆弱
热门文章
- java.lang.OutOfMemoryError: Java heap space错误及处理办法(收集整理、转)
- mysql数据库表迁移
- Expression Blend 定义RadioButton行为动画
- Android应用程序窗口(Activity)的窗口对象(Window)的创建过程分析
- DDOS学习笔记(《破坏之王-DDOS攻击与防范深度剖析》)
- 解决Maven报Plugin execution not covered by lifecycle configuration
- Python数据结构——栈、队列的实现(一)
- Activity has leaked window that was originally added 问题解决
- Android Handler.removeCallbacksAndMessages(null)的作用
- Android GraphicBuffer