Weighted Uniform Strings

  • + 0 comments

    I managed to find a much faster solution using sets!

    def weightedUniformStrings(s, queries):
        findweight = {"a":1, "b":2, "c":3, "d":4, "e":5, "f":6, "g":7, "h":8, "i":9, "j":10, "k":11, "l":12, "m":13, "n":14, "o":15, "p":16, "q":17, "r":18, "s":19, "t":20, "u":21, "v":22, "w":23, "x":24, "y":25, "z":26}
        uniforms = {findweight[s[0]]}
        count = 1
        for i in range(1, len(s)):
            if s[i] == s[i - 1]:
                count += 1
                uniforms.add(findweight[s[i]] * count)
            else:
                count = 1
                uniforms.add(findweight[s[i]])
        return ["Yes" if query in uniforms else "No" for query in queries]