Weighted Uniform Strings

  • + 0 comments

    Golang

    func weightedUniformStrings(s string, queries []int32) []string {
        characters := "abcdefghijklmnopqrstuvwxyz"
        m := map[string]int32{}
        for i,val := range characters{
            m[string(val)] = int32(i+1)
        }
        temp := ""
        intMap := map[int32]*string{}
        var sum int32 = 0
        for i:=0;i<len(s);i++{
            char := string(s[i])
            if len(temp) > 0{
                if string(s[i]) == string(temp[0]){
                    temp += string(s[i])
                    sum += m[string(s[i])]
                    intMap[sum] = &temp
                }else{ 
                    temp = string(s[i])
                    sum = m[string(s[i])]
                    intMap[sum] = &char
                }   
            }else{
                temp = string(s[i])
                sum = m[string(s[i])]
                intMap[sum] = &char
            }
        }
        output := []string{}
        for _,val := range queries{
            if _, found:= intMap[int32(val)];found{
                output = append(output, "Yes")
            }else{
                output = append(output, "No")
            }
        }
        return output
    }