摘要:背景在做廣點通信息流數據獲取的時候有這么一個字段投放時間段,格式為位字符串,且都為和,以半個小時為最小粒度,從周一零點開始至周日點結束。為不投放,為投放,全傳視為全時段投放,不允許全部傳。
背景
在做廣點通信息流數據獲取的時候有這么一個字段:time_series 投放時間段,格式為 48 * 7 位字符串,且都為 0 和 1,以半個小時為最小粒度,從周一零點開始至周日 24 點結束。0 為不投放,1 為投放,全傳 1 視為全時段投放,不允許全部傳 0。朋友圈廣告的投放時間需大于等于 6 小時,小于等于 30 個自然日,且每天投放的時段需保持一致。在實際的數據獲取返回結果為:
000000000000001111111111111000000011111111111111000000000000001111111111111000000011111111111111000000000000001111111111111000000011111111111111000000000000001111111111111000000011111111111111000000000000001111111111111000000011111111111111000000000000001111111111111000000011111111111111000000000000001111111111111000000011111111111111
需求方提出需要將此字段進行格式化,格式化后的字段格式為:
[1, 2, 3, 4, 5, 6, 7]7:00-13:30,17:00-24:00方法
由于時間比較緊促,簡單寫了個方法記錄下,后面再回來
private String formatTimeSeries(String timeSeries) { Map> weekTimeMap = new LinkedHashMap<>(); if(!timeSeries.matches("[0-1]{336}")) { return ""; } for (int i = 0; i < timeSeries.length(); i++) { if(!String.valueOf(timeSeries.charAt(i)).equals("1")) { continue; } int day = i/48 + 1; List list = weekTimeMap.get(day); if(null == list) { list = new ArrayList<>(); } list.add((i%48)/2+(i%48%2==1?":30":":00")); weekTimeMap.put(day,list); } Map > timeWeekMap = new HashMap<>(); for(Integer i : weekTimeMap.keySet()){ List list = weekTimeMap.get(i); String formatTimeSeries = ""; while (list.size() > 0) { String startTime = list.get(0); list.remove(0); String startHour = startTime.split(":")[0]; String startMinute = startTime.split(":")[1]; String endTime = startMinute.equals("30") ? (Integer.valueOf(startHour) + 1) + ":00" : startHour + ":30"; while (list.contains(endTime)) { list.remove(endTime); String endHour = endTime.split(":")[0]; String endMinute = endTime.split(":")[1]; endTime = endMinute.equals("30") ? (Integer.valueOf(endHour) + 1) + ":00" : endHour + ":30"; } formatTimeSeries += (formatTimeSeries.length() == 0 ? "" : ",") + startTime + "-" + endTime; } List timeList = timeWeekMap.get(formatTimeSeries); if(null == timeList) { timeList = new ArrayList<>(); } timeList.add(i); timeWeekMap.put(formatTimeSeries, timeList); } String formatTimeSeries = ""; for(String time : timeWeekMap.keySet()){ formatTimeSeries += (formatTimeSeries.length() == 0 ? "" : ";") + timeWeekMap.get(time).toString() + time; } return formatTimeSeries; }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/74202.html
摘要:算法第一章學習筆記實現更多內容目標總結本書主要內容,相應算法使用來模仿實現在計算機科學領域,我們用算法這個詞來描述一種有限確定有效的并適合用計算機程序來實現的解決問題的方法。 《算法》第一章學習筆記js實現 更多內容 目標:總結本書主要內容,相應算法使用js來模仿實現 在計算機科學領域,我們用算法這個詞來描述一種有限、確定、有效的并適合用計算機程序來實現的解決問題的方法。我們關注的大多...
摘要:算法第一章學習筆記實現更多內容目標總結本書主要內容,相應算法使用來模仿實現在計算機科學領域,我們用算法這個詞來描述一種有限確定有效的并適合用計算機程序來實現的解決問題的方法。 《算法》第一章學習筆記js實現 更多內容 目標:總結本書主要內容,相應算法使用js來模仿實現 在計算機科學領域,我們用算法這個詞來描述一種有限、確定、有效的并適合用計算機程序來實現的解決問題的方法。我們關注的大多...
摘要:算法第一章學習筆記實現更多內容目標總結本書主要內容,相應算法使用來模仿實現在計算機科學領域,我們用算法這個詞來描述一種有限確定有效的并適合用計算機程序來實現的解決問題的方法。 《算法》第一章學習筆記js實現 更多內容 目標:總結本書主要內容,相應算法使用js來模仿實現 在計算機科學領域,我們用算法這個詞來描述一種有限、確定、有效的并適合用計算機程序來實現的解決問題的方法。我們關注的大多...
摘要:相關操作就是判斷的不等號符號改反,初始值設為負無窮副本的最短路徑即為原圖的最長路徑。方法是同上面一樣構造圖,同時會添加負權重邊,再將所有邊取反,然后求最短路徑最短路徑存在則可行沒有負權重環就是可行的調度。 Algorithms Fourth EditionWritten By Robert Sedgewick & Kevin WayneTranslated By 謝路云Chapter ...
摘要:由此觀之,實現桑基圖的核心在于計算出以上的這些點坐標。減少邊交叉當數據量到一定程度的時候,桑基圖中的邊會出現重疊現象,造成一定的視覺混亂。綜上,桑基圖是一個展現數據流非常好用的視圖,感興趣的同學可以自己實現一個試試。 原文地址:https://geekplux.com/2018/08/28/how-to-implement-sankey-diagram.html 什么是桑基圖 sho...
閱讀 2727·2021-11-22 15:22
閱讀 1631·2021-11-22 14:56
閱讀 3616·2021-09-22 15:12
閱讀 2403·2021-09-02 15:41
閱讀 2122·2021-08-27 16:26
閱讀 1113·2019-08-30 15:55
閱讀 2139·2019-08-29 17:30
閱讀 665·2019-08-29 16:26