題目
當一個字串 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題目,資料量小,直接使用暴力法解決
最新評論