HackerRank Word Order problem solution in Python | python Question solution
Table of Contents
You are given words. Some words may repeat. For each word, output its number of occurrences. The output order should correspond with the input order of appearance of the word. See the sample input/output for clarification.
Note: Each input line ends with a “n” character.
Constraints:
The sum of the lengths of all the words do not exceed
All the words are composed of lowercase English letters only.
Input Format
The first line contains the integer, .
The next lines each contain a word.
Output Format
Output lines.
On the first line, output the number of distinct words from the input.
On the second line, output the number of occurrences for each distinct word according to their appearance in the input.
Sample Input
4
bcdef
abcdefg
bcde
bcdef
Sample Output
3
2 1 1
Explanation
There are distinct words. Here, “bcdef” appears twice in the input at the first and last positions. The other words appear once each. The order of the first appearances are “bcdef”, “abcdefg” and “bcde” which corresponds to the output.
In this Word order problem, we need to develop a python program that can read an integer and string as an input separated with each line, and then we need to print the number of occurrence of the distinct word in the given string on the output screen
Problem solution in Python 2 programming.
# Enter your code here. Read input from STDIN. Print output to STDOUT
n = int(raw_input().strip())
counter = {}
words = []
for i in range(n):
word = raw_input().strip()
if word in counter:
counter[word] += 1
else:
counter[word] = 1
words.append(word)
print len(words)
print ' '.join([str(counter[word]) for word in words])
Problem solution in Python 3 programming.
# Enter your code here. Read input from STDIN. Print output to STDOUT
from collections import Counter, OrderedDict
class OrderedCounter(Counter, OrderedDict):
pass
d = OrderedCounter(input() for _ in range(int(input())))
print(len(d))
print(*d.values())
Problem solution in pypy programming.
# Enter your code here. Read input from STDIN. Print output to STDOUT
from collections import OrderedDict
num = raw_input()
word_dict = OrderedDict()
list_words = []
for i in range(0,int(num)):
list_words.append(raw_input())
for word in list_words:
if word not in word_dict:
word_dict[word] = 1
else:
word_dict[word] = word_dict[word] + 1
answer = ""
for i in word_dict:
answer = answer + str(word_dict[i]) + " "
print str(len(word_dict)) + "n" + answer
Problem solution in pypy3 programming.
from collections import OrderedDict
od = OrderedDict()
for _ in range(int(input())):
x = input()
od[x]=od.get(x,0)+1
print (len(od))
print (" ".join(str(v) for k,v in od.items()))