欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

判斷兩個(gè)事件是否存在沖突

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

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

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

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

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

示例 1:

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

示例 2:

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

示例 3:

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

提示:

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

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

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

1 將時(shí)間字符串解析為小時(shí)和分鐘。

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

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

以下是使用Golang實(shí)現(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é)邏輯運(yùn)算

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

package main

import (
	"fmt"
	"strings"
)

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

	// 檢查第一個(gè)事件的結(jié)束時(shí)間是否早于第二個(gè)事件的開始時(shí)間,或者第一個(gè)事件的開始時(shí)間是否晚于第二個(gè)事件的結(jié)束時(shí)間
	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
}

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

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

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

相關(guān)文章

  • Go語言生成隨機(jī)數(shù)的方法

    Go語言生成隨機(jī)數(shù)的方法

    這篇文章主要介紹了Go語言生成隨機(jī)數(shù)的方法,實(shí)例分析了Go語言生成隨機(jī)數(shù)的原理與實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • go語言心跳超時(shí)的實(shí)現(xiàn)示例

    go語言心跳超時(shí)的實(shí)現(xiàn)示例

    本文主要介紹了go語言心跳超時(shí)的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Go語言高效編程的3個(gè)技巧總結(jié)

    Go語言高效編程的3個(gè)技巧總結(jié)

    Go語言是一種開源編程語言,可輕松構(gòu)建簡(jiǎn)單、可靠且高效的軟件,下面這篇文章主要給大家分享介紹了關(guān)于Go語言高效編程的3個(gè)技巧,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • golang并發(fā)下載多個(gè)文件的方法

    golang并發(fā)下載多個(gè)文件的方法

    今天小編就為大家分享一篇golang并發(fā)下載多個(gè)文件的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Go實(shí)現(xiàn)分布式唯一ID的生成之雪花算法

    Go實(shí)現(xiàn)分布式唯一ID的生成之雪花算法

    本文主要介紹了Go實(shí)現(xiàn)分布式唯一ID的生成之雪花算法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • GoFrame錯(cuò)誤處理常用方法及錯(cuò)誤碼使用示例

    GoFrame錯(cuò)誤處理常用方法及錯(cuò)誤碼使用示例

    這篇文章主要為大家介紹了GoFrame錯(cuò)誤處理常用方法及錯(cuò)誤碼使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • golang interface{}類型轉(zhuǎn)換的實(shí)現(xiàn)示例

    golang interface{}類型轉(zhuǎn)換的實(shí)現(xiàn)示例

    在Go語言中,類型轉(zhuǎn)換可以通過斷言、顯式、隱式和強(qiáng)制四種方式實(shí)現(xiàn),針對(duì)interface{}類型轉(zhuǎn)換為float32或float64,需要使用type斷言或reflect包處理,感興趣的可以了解一下
    2024-10-10
  • 詳解Go?中的時(shí)間處理

    詳解Go?中的時(shí)間處理

    這篇文章主要介紹了Go?中的時(shí)間處理,本文將介紹?time?庫中一些重要的函數(shù)和方法,希望能幫助到那些一遇到?Go?時(shí)間處理問題就需要百度的童鞋,需要的朋友可以參考下
    2022-07-07
  • golang中cache組件的使用及groupcache源碼解析

    golang中cache組件的使用及groupcache源碼解析

    本篇主要解析groupcache源碼中的關(guān)鍵部分, lru的定義以及如何做到同一個(gè)key只加載一次。緩存填充以及加載抑制的實(shí)現(xiàn)方法,本文重點(diǎn)給大家介紹golang中cache組件的使用及groupcache源碼解析,感興趣的朋友一起看看吧
    2021-06-06
  • golang使用泛型結(jié)構(gòu)體實(shí)現(xiàn)封裝切片

    golang使用泛型結(jié)構(gòu)體實(shí)現(xiàn)封裝切片

    這篇文章主要為大家詳細(xì)介紹了golang使用泛型結(jié)構(gòu)體實(shí)現(xiàn)封裝切片,即封裝切片的增、刪、改、查、長(zhǎng)度大小、ForEach(遍歷切片),感興趣的小伙伴可以學(xué)習(xí)一下
    2023-10-10

最新評(píng)論