字符串很多可以直接哈希或者用arr[26]来解决,这一题便是用的arr[26]。思路整体不难但是耗费时间
Go版本:
import (
"fmt"
"strings"
)
func shortestCompletingWord(licensePlate string, words []string) string {
// 长度最短,最靠前
var arr [26]int;
var str_arr [26]int;
licensePlate=strings.ToLower(licensePlate)
for i:=0;i<len(licensePlate);i++{
tmp:=licensePlate[i]-'a';
if tmp>=0 && tmp<26{
arr[tmp]++;
}
}
// fmt.Println(arr)
var res []int
var res_loc []int;
visited:=0
for key,str:=range words {
str=strings.ToLower(str);
str_arr=arr;
visited=0;
for _,value:=range str{
str_arr[value-'a']--;
}
// fmt.Println(str_arr)
for i:=0;i<26;i++{
if str_arr[i]>0{
visited=1;
break;
}
}
if visited==0{
res=append(res,len(str));
res_loc=append(res_loc,key);
}
}
min,min_loc:=res[0],res_loc[0];
for i:=0;i<len(res);i++{
if min>res[i]{
min=res[i];
min_loc=res_loc[i];
}
}
return words[min_loc]
}
网友评论