首頁>技術>

題目

當一個字串 s 包含的每一種字母的大寫和小寫形式 同時 出現在 s 中,就稱這個字串 s 是 美好 字串。

比方說,"abABB" 是美好字串,因為 'A' 和 'a' 同時出現了,且 'B' 和 'b' 也同時出現了。

然而,"abA" 不是美好字串因為 'b' 出現了,而 'B' 沒有出現。

給你一個字串 s ,請你返回 s 最長的 美好子字串 。

如果有多個答案,請你返回 最早 出現的一個。如果不存在美好子字串,請你返回一個空字串。

示例 1:輸入:s = "YazaAay" 輸出:"aAa"

解釋:"aAa" 是一個美好字串,因為這個子串中僅含一種字母,其小寫形式 'a' 和大寫形式 'A' 也同時出現了。

"aAa" 是最長的美好子字串。

示例 2:輸入:s = "Bb" 輸出:"Bb"

解釋:"Bb" 是美好字串,因為 'B' 和 'b' 都出現了。整個字串也是原字串的子字串。

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

解釋:沒有美好子字串。

示例 4:輸入:s = "dDzeE" 輸出:"dD"

解釋:"dD" 和 "eE" 都是最長美好子字串。

由於有多個美好子字串,返回 "dD" ,因為它出現得最早。

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

s 只包含大寫和小寫英文字母。

解題思路分析

1、暴力法;時間複雜度O(n^2),空間複雜度O(n)

func longestNiceSubstring(s string) string {	res := ""	for i := 0; i < len(s); i++ {		for j := i + 1; j <= len(s); j++ {			if judge(s[i:j]) == true && len(s[i:j]) > len(res) {				res = s[i:j]			}		}	}	return res}func judge(str string) bool {	a := [26]int{}	A := [26]int{}	for i := 0; i < len(str); i++ {		if 'a' <= str[i] && str[i] <= 'z' {			a[str[i]-'a']++		} else {			A[str[i]-'A']++		}	}	for i := 0; i < 26; i++ {		if (a[i] > 0 && A[i] == 0) || (a[i] == 0 && A[i] > 0) {			return false		}	}	return true}
總結

Easy題目,資料量小,直接使用暴力法解決

14
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 每日一題,每天進步