Weighted Uniform Strings

Sort by

recency

|

804 Discussions

|

  • + 0 comments

    un-realistic test cases used as usual

  • + 0 comments

    Here is solution in python, java, c++, c and javascript programming - https://programmingoneonone.com/hackerrank-weighted-uniform-strings-problem-solution.html

  • + 0 comments

    Pretty plain code. def weightedUniformStrings(s, queries): # Write your code here

    c2v = {
        '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
    }
    
    collect = set()
    
    carry = []
    for si in s:
        if len(carry) == 0 or si != carry[-1]:
            carry = [si]
            collect.add(c2v[si])
        else:
            carry.append(si)
            collect.add(c2v[si]*len(carry))
    
    ans = []
    for q in queries:
        if q in collect:
            ans.append('Yes')
        else:
            ans.append('No')
    
    return ans
    
  • + 0 comments
    function weightedUniformStrings(s: string, queries: number[]): string[] {
        const alphabet = '0abcdefghijklmnopqrstuvwxyz'.split('');
        const availWeights =  new Set<number>()
        const chop = s.split('')
        let mult = 1
        for(let i = 0; i < chop.length; i++) {
            const weight = alphabet.indexOf(chop[i]) * mult;
            availWeights.add(weight);
            if(chop[i+1] !== chop[i]) {
                mult = 1
            } else {
                mult++
            }
        }
        const result: string[] = []
        for(let query of queries) {
            availWeights.has(query) ? result.push('Yes') : result.push('No')
        }
        return result
    }
    
  • + 0 comments
        public static List<String> weightedUniformStrings(String s, List<Integer> queries) {
        // Write your code here
        List<String> ans = new ArrayList<>();
        HashSet<Integer> weights = new HashSet<>();
        
        int currentweight = 0;
        char prevChar = ' ';
        
        for(int i = 0; i < s.length(); i++) {
            char currentChar = s.charAt(i);
            int charWeight = currentChar - 'a' + 1;
            
            if(currentChar == prevChar) {
                currentweight += charWeight;
            } else {
                currentweight = charWeight;
            }
            weights.add(currentweight);
            prevChar = currentChar;
        }
        
        for(int i : queries) {
                if(weights.contains(i)) {
                    ans.add("Yes");
                } else {
                ans.add("No");
                }
        }
            return ans;
        }