方法分享:有序集合分段

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、说明

  这个功能在做项目的过程中有时会遇到,个人感觉写的有点繁琐,提供拙见供大家探讨。

posted on 2011-08-20 13:41 daixinet.com 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/sshoub/archive/2011/08/20/2147114.html

方法分享:有序集合分段相关推荐

  1. 按照姓名升序排序的代码_好程序员Java培训分享Java集合的两种排序方法

    好程序员Java培训分享Java集合的两种排序方法,Java集合的工具类Collections中提供了两种排序的方法,分别是: 1.Collections.sort(List list) 2.Coll ...

  2. php数值相加_PHP+Redis 有序集合实现 24 小时排行榜实时更新

    php中文网最新课程 每日17点准时技术干货分享 基本介绍 Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员. 不同的是每个元素都会关联一个 double 类型的分 ...

  3. php 实时更新内容_PHP+Redis 有序集合实现 24 小时排行榜实时更新

    php中文网最新课程 每日17点准时技术干货分享 基本介绍 Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员. 不同的是每个元素都会关联一个 double 类型的分 ...

  4. Redis 笔记(07)— sorted set 类型(添加、删除有序集合元素、获取分数范围内成员、按score排序、返回集合元素个数)

    zset 可能是 Redis 提供的最为特色的数据结构,一方面它是一个 set,保证了内部 value 的唯一性,另一方面它可以给每个 value 赋予一个 score,代表这个 value 的排序权 ...

  5. redis中的order set 有序集合

    redis中的order set 有序集合 命令 1 zadd key score1 value1 score2 value2 .. 添加元素 127.0.0.1:6379> zadd user ...

  6. Redis-07Redis数据结构--有序集合ZSet

    文章目录 概述 有序集合的数据结构 Redis 有序集合的部分命令 spring-data-redis 对有序集合的封装 使用 Spring 操作有序集合 注意 代码 概述 有序集合和集合类似,只是说 ...

  7. 【python】Python中给List添加元素的4种方法分享

    List 是 Python 中常用的数据类型,它一个有序集合,即其中的元素始终保持着初始时的定义的顺序(除非你对它们进行排序或其他修改操作). 在Python中,向List添加元素,方法有如下4种方法 ...

  8. 为什么redis取出来是null_跳表:为什么Redis一定要用跳表来实现有序集合

    上两节我们讲了二分查找算法.当时我讲到,因为二分查找底层依赖的是数组随机访问的特性,所以只能用数组来实现.如果数据存储在链表中,就真的没法用二分查找算法了吗? 实际上,我们只需要对链表稍加改造,就可以 ...

  9. Java14-day05【集合(Collection常用方法-遍历、List特有方法、List集合子类特点、LinkedList集合的特有功能、ListIterator)】

    视频+资料(工程源码.笔记)[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg   提取码:zjxs] Java基础--学习笔记(零起点打开java ...

最新文章

  1. 齐鲁工业大学计算机读研,齐鲁工业大学考研难吗
  2. 4月书讯(下)| 美亚4.8星评,又一本口碑相传的著作来了
  3. 解析Jquery取得iframe中元素的几种方法
  4. phpstrom中让volt高亮显示
  5. iOS tableviewcell重用机制避免重复显示
  6. C# - 简单介绍TaskScheduler
  7. 2017蓝桥c语言真题,[蓝桥杯][2017年第八届真题]发现环 (C语言代码)------------C语言——菜鸟级...
  8. .NET 6 的 docker 镜像可以有多小
  9. SQL数据库不用SQL语句能显示全表的内容_2020别再说你了解数据库了,你搞清楚这些问题了吗?...
  10. powershell 发邮件
  11. 远程执行命令不成功的问题
  12. WebGIS开发培训(ArcGIS API for JavaScript方向)
  13. 手机便签怎么对待办分类文件夹加密
  14. php 解析lrc文件格式,C#解析Lrc歌词文件过程详解
  15. 中级计算机软件师考试试题,计算机水平考试-(a)中级软件设计师下午试题模拟64.doc...
  16. PE文件加节感染之Win32.Loader.bx.V病毒分析
  17. mysql安装版要选择_mysql 安装版
  18. 特斯拉4D成像毫米波雷达与木牛科技早期开源的产品几乎一模一样?
  19. 【学习笔记】VGG 网络结构
  20. 试衣网的商业模式很脆弱

热门文章

  1. java.lang.OutOfMemoryError: Java heap space错误及处理办法(收集整理、转)
  2. mysql数据库表迁移
  3. Expression Blend 定义RadioButton行为动画
  4. Android应用程序窗口(Activity)的窗口对象(Window)的创建过程分析
  5. DDOS学习笔记(《破坏之王-DDOS攻击与防范深度剖析》)
  6. 解决Maven报Plugin execution not covered by lifecycle configuration
  7. Python数据结构——栈、队列的实现(一)
  8. Activity has leaked window that was originally added 问题解决
  9. Android Handler.removeCallbacksAndMessages(null)的作用
  10. Android GraphicBuffer