📌  相关文章
📜  国际空间研究组织 | ISRO CS 2017 – 5 月 |问题 12(1)

📅  最后修改于: 2023-12-03 15:23:04.289000             🧑  作者: Mango

国际空间研究组织 | ISRO CS 2017 – 5 月 | 问题 12

这是一道关于字符串处理的问题。

问题描述

题目要求统计一个字符串中每个单词出现的次数。

输入格式

一个字符串,由不超过1000个大小写英文字母和空格组成。

输出格式

每行输出一个单词及其出现的次数,格式为单词: 出现次数

样例输入
This is a sample input to test the solution.
样例输出
This: 1
is: 1
a: 1
sample: 1
input: 1
to: 1
test: 1
the: 1
solution.: 1
思路分析

可以考虑使用哈希表来存储单词和对应的出现次数。

遍历整个字符串,从左至右,使用两个指针i和j,分别指向单词的首尾位置。

对于每个单词,可以使用一个函数来判断是否合法(只包含大小写英文字母),如果合法,则将该单词加入哈希表中,并且对应的出现次数加1。

最后遍历哈希表,输出每个单词及其出现次数。

参考代码
def count_words(s):
    words = {}
    i = 0
    n = len(s)
    while i < n:
        # 找到单词的第一个字符
        while i < n and not s[i].isalpha():
            i += 1
        j = i
        # 找到单词的最后一个字符
        while j < n and s[j].isalpha():
            j += 1
        # 如果找到了一个单词,加入哈希表中
        if i < j:
            word = s[i:j].lower()
            if word in words:
                words[word] += 1
            else:
                words[word] = 1
        i = j
    # 输出哈希表中的单词及其出现次数
    for word, count in words.items():
        print(word + ': ' + str(count))

s = input()
count_words(s)

使用python实现。