一个有意思的算法

来源:互联网 发布:淘宝买花苗 编辑:程序博客网 时间: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
原创粉丝点击