已知一个字符串数组words,要求寻找其中两个没有重复字符的字符串,使得这两个字符串的长度乘积最大,输出这个最大的乘积。如:
words=["abcd","wxyh","defgh"], 其中不包含重复字符的两个字符串是"abcd"和"wxyh",则输出16
words=["a","aa","aaa","aaaa"], 找不到满足要求的两个字符串,则输出0
数据范围:输入的字符串长度满足 ,保证只包含小写字母
Input:
["a","ab","abc","cd","bcd","abcd"]
Output:
4
["a","ab","abc","cd","bcd","abcd"]
4
Input中,不包含相同字符的有三对:
"ab"和"cd"
"a"和"cd"
"a"和"bcd"
所以字符串长度乘积的最大值是4
package main import ( "fmt" "os" "bufio" "strings" ) var in=bufio.NewReader(os.Stdin) func main() { s,_:=in.ReadString('\n') s=s[1:len(s)-2] if len(s)==0{ fmt.Print(0) return } arr:=strings.Split(s,",") for i,_:=range arr{ arr[i]=arr[i][1:len(arr[i])-1] if len(arr[i])==0{ fmt.Print(0) return } } ans:=0 for i:=0;i<len(arr);i++{ for j:=i+1;j<len(arr);j++{ if comp(arr[i],arr[j]){ if len(arr[i])*len(arr[j])>ans{ ans=len(arr[i])*len(arr[j]) } } } } fmt.Print(ans) } func comp(s1,s2 string)bool{ cnt:=map[byte]int{} for _,ch:=range []byte(s1+s2){ cnt[ch]++ if cnt[ch]>1{ return false } } return true }