2015-02-09 74 views
1

我有數據的行像這樣的代表企業開放時間業務營業時間分組算法

day/opentime /closetime/isOpen 
0  09:00:00 17:00:00  true 
1  09:00:00 17:00:00  true 
2  08:00:00 17:00:00  true 
3  09:00:00 17:00:00  true 
4  09:00:00 17:00:00  true 
5        false 
6  09:00:00 17:00:00  true 

有一天是0-6的整數(週一至週日)和IOPEN

再之前-inventing車輪,並開始思考一個新的算法,我想知道是否有已經有一些算法中,會做一些類似這樣:

MON - TUE 9am - 5pm 
WED 8am - 5pm 
THU - FRI 9am - 5pm 
SUN 9am - 5pm 

基本分組有個天開始和結束時間在一起?

我不是要求準備好去算法,而是更多的建議去哪裏看看是否已經有類似的東西已經完成。

ps:獎金問題。我存儲數據的方式是否有效實現我的目標?

+3

循環遍歷。如果時間與上一行相同,則將範圍的「至」日更改爲當天。如果沒有,開始一個新的範圍。 – Barmar 2015-02-09 23:48:36

+1

參見http://stackoverflow.com/questions/15413961/grouping-contiguous-dates – 2015-02-11 03:26:37

回答

2

這是一個相當直接的算法。只需在代碼中寫下你將作爲人類做什麼。

作爲一個人,當我看着你給我的數據時,我從星期一開始,在一張紙上寫下打開/關閉時間,並在他們旁邊寫上「星期一」。然後我看看星期二。如果週二的開盤時間與前一天的開盤時間相同,那麼我只需將時間寫在我的報紙上,並在週一旁添加「星期二」即可。我一直這樣做直到找到與前一天不一樣的開/關時間。在這種情況下,我在我的論文中寫下一條新的線,寫下新的打開/關閉時間,並繼續這樣做直到結束。

如果我要用C編寫它,我會使用一個結構數組,其中結構只有打開時間,關閉時間和一組字符數組(即一個字符串數組)來存儲與這些小時相關的日期。 (注意:可能有更有效的方式來存儲這個,但是這對於你的目的來說似乎已經足夠了)