首頁>技術>

題目

給你一個只包含字元 'a','b' 和 'c' 的字串 s ,你可以執行下面這個操作(5 個步驟)任意次:

選擇字串 s 一個 非空 的字首,這個字首的所有字元都相同。

選擇字串 s 一個 非空 的字尾,這個字尾的所有字元都相同。

字首和字尾在字串中任意位置都不能有交集。

字首和字尾包含的所有字元都要相同。

請你返回對字串 s 執行上面操作任意次以後(可能 0 次),能得到的 最短長度 。

示例 1:輸入:s = "ca" 輸出:2

示例 2:輸入:s = "cabaabac" 輸出:0

解釋:最優操作序列為:

示例 3:輸入:s = "aabccabba" 輸出:3

解釋:最優操作序列為:

提示:1 <= s.length <= 105

s 只包含字元 'a','b' 和 'c' 。

解題思路分析

1、內建函式;時間複雜度O(n),空間複雜度O(n)

func minimumLength(s string) int {	for len(s) > 0 {		if s[0] == s[len(s)-1] && len(s) != 1 {			temp := string(s[0])			s = strings.TrimLeft(s, temp)			s = strings.TrimRight(s, temp)		} else {			break		}	}	return len(s)}

2、雙指標;時間複雜度O(n),空間複雜度O(1)

func minimumLength(s string) int {	left, right := 0, len(s)-1	for left < right {		if s[left] != s[right] {			break		}		temp := s[left]		for left <= right && s[left] == temp {			left++		}		for left <= right && s[right] == temp {			right--		}	}	return right - left + 1}
總結

Medium題目,題目比較簡單,可以使用雙指標,也可以使用內建函式

5
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 09面向初級物件(類)