最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

golang判斷兩個事件是否存在沖突的方法示例

 更新時間:2023年10月27日 10:56:30   作者:知其黑、受其白  
這篇文章主要為大家詳細介紹了golang判斷兩個事件是否存在沖突的方法示例,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

判斷兩個事件是否存在沖突

給你兩個字符串?dāng)?shù)組 event1 和 event2 ,表示發(fā)生在同一天的兩個閉區(qū)間時間段事件,其中:

event1 = [startTime1, endTime1] 且 event2 = [startTime2, endTime2]

事件的時間為有效的 24 小時制且按 HH:MM 格式給出。

當(dāng)兩個事件存在某個非空的交集時(即,某些時刻是兩個事件都包含的),則認為出現(xiàn) 沖突 。

如果兩個事件之間存在沖突,返回 true ;否則,返回 false 。

示例 1:

輸入:event1 = [“01:15”,“02:00”], event2 = [“02:00”,“03:00”]
輸出:true
解釋:兩個事件在 2:00 出現(xiàn)交集。

示例 2:

輸入:event1 = [“01:00”,“02:00”], event2 = [“01:20”,“03:00”]
輸出:true
解釋:兩個事件的交集從 01:20 開始,到 02:00 結(jié)束。

示例 3:

輸入:event1 = [“10:00”,“11:00”], event2 = [“14:00”,“15:00”]
輸出:false
解釋:兩個事件不存在交集。

提示:

event1.length == event2.length == 2.
event1[i].length == event2[i].length == 5
startTime1 <= endTime1
startTime2 <= endTime2

所有事件的時間都按照 HH:MM 格式給出

轉(zhuǎn)換成時間比較

1 將時間字符串解析為小時和分鐘。

2 檢查第一個事件的結(jié)束時間是否在第二個事件的開始時間之后,同時也要確保第一個事件的開始時間在第二個事件的結(jié)束時間之前。

3 如果以上兩個條件都滿足,那么兩個事件存在交集,即存在沖突。

以下是使用Golang實現(xiàn)這一邏輯的代碼:

package main

import (
	"fmt"
	"time"
)

func isEventConflict(event1, event2 []string) bool {
	layout := "15:04"
	startTime1, _ := time.Parse(layout, event1[0])
	endTime1, _ := time.Parse(layout, event1[1])
	startTime2, _ := time.Parse(layout, event2[0])
	endTime2, _ := time.Parse(layout, event2[1])

	// 檢查是否存在沖突(Before 之前 After 之后 Equal 相等)
	if (startTime1.Before(endTime2) || startTime1.Equal(endTime2)) &&
		(endTime1.After(startTime2) || endTime1.Equal(startTime2)) {
		return true
	}

	return false
}

func main() {
	event1 := []string{"01:15", "02:00"}
	event2 := []string{"02:00", "03:00"}
	fmt.Println(isEventConflict(event1, event2)) // 輸出:true

	event1 = []string{"01:00", "02:00"}
	event2 = []string{"01:20", "03:00"}
	fmt.Println(isEventConflict(event1, event2)) // 輸出:true

	event1 = []string{"10:00", "11:00"}
	event2 = []string{"14:00", "15:00"}
	fmt.Println(isEventConflict(event1, event2)) // 輸出:false
}

使用純粹的字符串比較和數(shù)學(xué)邏輯運算

當(dāng)處理時間區(qū)間的沖突時,除了前面提到的兩種方式,還可以使用純粹的字符串比較和數(shù)學(xué)邏輯運算。下面是另一種不涉及時間解析的方法,它直接比較時間字符串:

package main

import (
	"fmt"
	"strings"
)

func isEventConflict(event1 []string, event2 []string) bool {
	startTime1, endTime1 := event1[0], event1[1]
	startTime2, endTime2 := event2[0], event2[1]

	// 檢查第一個事件的結(jié)束時間是否早于第二個事件的開始時間,或者第一個事件的開始時間是否晚于第二個事件的結(jié)束時間
	if endTime1 < startTime2 || startTime1 > endTime2 {
		return false
	}
	return true
}

func main() {
	event1 := []string{"01:15", "02:00"}
	event2 := []string{"02:00", "03:00"}

	result := isEventConflict(event1, event2)
	fmt.Println(result) // 輸出:true
}

這段代碼直接比較時間字符串,不進行時間解析,通過字符串的字典順序來判斷時間區(qū)間是否有交集。這種方法對于簡單的時間字符串可以工作,但不如使用 time 包來處理復(fù)雜的時間邏輯更可靠。根據(jù)示例輸入,這段代碼將輸出 true,表示兩個事件存在沖突。

請注意,這種方法假定輸入的時間字符串都符合有效的 24 小時制時間格式。

以上就是golang判斷兩個事件是否存在沖突的方法示例的詳細內(nèi)容,更多關(guān)于golang判斷兩個事件沖突的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解使用Go添加Nginx代理的方法示例

    詳解使用Go添加Nginx代理的方法示例

    這篇文章主要介紹了詳解使用Go添加Nginx代理的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Golang實踐之Error創(chuàng)建和處理詳解

    Golang實踐之Error創(chuàng)建和處理詳解

    在 C#、Java 等語言中常常使用 try...catch的方式來捕獲異常,但是在Golang 對于錯誤處理有不同的方式,像網(wǎng)上也有很多對 error 處理的最佳實踐的文章,其中很多其實就是對 error 的統(tǒng)一封裝,使用規(guī)范進行約束,本文主要是記錄自己對處理 Error 的一些認識和學(xué)習(xí)
    2023-09-09
  • Go語言中validation庫不能校驗零值問題的解決方法

    Go語言中validation庫不能校驗零值問題的解決方法

    在使用 Gin 框架的時候,前后端傳遞數(shù)據(jù)的時候,比如使用 JSON 格式,通常會使用 ShouldBindJSON 去用結(jié)構(gòu)體打 tag 綁定前端傳來的 JSON 格式數(shù)據(jù),本文給大家介紹了Go語言中validation庫不能校驗零值問題的解決方法,需要的朋友可以參考下
    2024-08-08
  • GO語言的map類型實例詳解

    GO語言的map類型實例詳解

    這篇文章主要介紹了GO語言的map類型實例詳解,包括對map的創(chuàng)建,賦值,排序,刪除,等操作需要的朋友可以參考下
    2022-12-12
  • Golang中的int類型和uint類型到底有多大?

    Golang中的int類型和uint類型到底有多大?

    int和uint類型在我們?nèi)粘i_發(fā)中經(jīng)常會用到,但有個疑問就是這兩個類型有多大,通過各種嘗試最終得到了答案,所以下面這篇文章主要給大家介紹了關(guān)于Golang中的int類型和uint類型到底有多大的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。
    2017-12-12
  • GoLang內(nèi)存模型詳細講解

    GoLang內(nèi)存模型詳細講解

    go官方介紹go內(nèi)存模型的時候說:探究在什么條件下,goroutine 在讀取一個變量的值的時,能夠看到其它 goroutine 對這個變量進行的寫的結(jié)果,Go內(nèi)存模型規(guī)定了一些條件,在這些條件下,在一個goroutine中讀取變量返回的值能夠確保是另一個goroutine中對該變量寫入的值
    2022-12-12
  • 使用Golang開發(fā)一個簡易版shell

    使用Golang開發(fā)一個簡易版shell

    這篇文章主要為大家詳細介紹了如何使用Golang開發(fā)一個簡易版shell,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02
  • Go1.18新特性之泛型使用三步曲(小結(jié))

    Go1.18新特性之泛型使用三步曲(小結(jié))

    本文主要介紹了Go1.18新特性之泛型,是Go1.18的新特性,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • 深度解析Go語言中的未使用導(dǎo)入和變量

    深度解析Go語言中的未使用導(dǎo)入和變量

    本文解析Go語言中未使用導(dǎo)入和變量的處理機制,強調(diào)其強制使用規(guī)則對代碼質(zhì)量的保障,通過移除冗余、使用空白標識符及工具清理,可提升代碼可讀性與性能
    2025-06-06
  • Go語言操作MySQL的知識總結(jié)

    Go語言操作MySQL的知識總結(jié)

    Go語言中的database/sql包提供了保證SQL或類SQL數(shù)據(jù)庫的泛用接口,并不提供具體的數(shù)據(jù)庫驅(qū)動。本文介紹了Go語言操作MySQL的相關(guān)知識,感興趣的可以了解一下
    2022-11-11

最新評論

茌平县| 桓仁| 将乐县| 宁武县| 五台县| 临城县| 隆回县| 吴忠市| 敦化市| 苏尼特右旗| 正镶白旗| 江西省| 合作市| 青河县| 阜康市| 绥江县| 陆良县| 桐乡市| 阳泉市| 河北省| 遂宁市| 蚌埠市| 彭泽县| 长阳| 浦城县| 景东| 弋阳县| 小金县| 崇信县| 呼和浩特市| 桦川县| 尉氏县| 曲麻莱县| 湖口县| 荆门市| 隆德县| 沿河| 舒城县| 益阳市| 灵寿县| 霸州市|