一个有意思的算法
来源:互联网 发布:淘宝买花苗 编辑:程序博客网 时间:2024/05/22 06:42
这个算法大概是这样的
1若是大于等于3个连续的日期,则“【开始天】至【结束天】”,如“周一至周三”
周一、周日不算连续
2若小于3个连续的日期,或者日期是间断的,则将所有天通过分隔符“、”按顺序拼接,如“周一、周三、周四”,“周二、周三”,“周一、周六、周日”
但是返回的是一个数组,如1101110 就要显示 周一二 周四-周六
自己写了一个算法如下
//week @[@(YES),@(NO),@(YES),@(YES),@(NO),@(YES),@(YES)]- (void)calculete:(NSArray *)week{ NSMutableString *timeRange = [NSMutableString string]; NSMutableString *succsiveDay =[NSMutableString string]; NSInteger successStart = 0; NSInteger successEnd = 0; for (NSInteger i=0; i<week.count; i++) { if (![week[i] boolValue]) { successEnd = i-1; if (succsiveDay.length >= 3) { [timeRange appendFormat:@"周%@至周%@ ",self.weeks[successStart],self.weeks[successEnd]]; succsiveDay = [NSMutableString stringWithString:@""]; } else{ switch (succsiveDay.length) { case 0: break; case 1: { NSString *str = timeRange.length>0?[NSString stringWithFormat:@",周%@",self.weeks[successEnd]]:[NSString stringWithFormat:@"周%@",self.weeks[successEnd]]; [timeRange appendString:str]; } break; case 2:{ NSString *str = timeRange.length>0?[NSString stringWithFormat:@",周%@%@",self.weeks[successStart],self.weeks[successEnd]]:[NSString stringWithFormat:@"周%@%@",self.weeks[successStart],self.weeks[successEnd]]; [timeRange appendString:str]; } break; default: break; } succsiveDay = [NSMutableString stringWithString:@""]; } successStart = i+1; } else{ [succsiveDay appendString:self.weeks[i]]; if (i == week.count-1) { NSString *str = (timeRange.length > 0)?[NSString stringWithFormat:@",周%@%@ ",self.weeks[successStart],self.weeks[week.count-1]]:[NSMutableString stringWithFormat:@"周%@至周%@ ",self.weeks[successStart],self.weeks[week.count-1]]; [timeRange appendString:str]; } } NSLog(@"%@",timeRange); }}
0 0
- 有意思的一个算法。
- 一个有意思的算法
- 一个有意思的排序算法
- 一个有意思的小算法
- 一个很有意思的排序算法
- 一个经典算法的解法,觉得挺有意思
- 一个有意思的算法,Container With Most Water
- 一个比较有意思的算法题,猴子选大王
- 一个有意思的思考题
- ------一个有意思的题目-----------
- 一个有意思的问题
- 一个有意思的问题
- 一个有意思的题目
- 一个有意思的梦
- 一个有意思的例子
- 一个有意思的bug
- 一个有意思的符号
- 一个有意思的博弈
- 使用asp.net core的启动篇
- MySQL注入技巧性研究
- unity学习笔记(一)
- Unity开发HTC vive 一、手柄按钮
- StateMachine 的简单使用
- 一个有意思的算法
- Java 反射
- oracle基本操作
- python: numpy --函数 tile用法
- Ubuntu与Windows7双系统环境搭建
- GCC C语言处理hooks实现
- eclipse中开发NDK以及环境搭建(一)
- Excel学会这两个技巧足矣
- Test