我正在试图弄清楚如何实现执行以下操作的方法:
该方法接收一个文本文件,并计算直到指定字符“#”的字数。
数组作为参数通过该方法传递,其中包含序列号列表。数组中的数字对应于单词在文本文件中出现的位置(忽略#),因此第4个单词将对应于值3(n-1)。
该方法将计算数字中#前面的单词出现的次数,并将其除以#之间的条目总数,然后取每次完成时的平均值。
这是一个明确的例子:
假设您有包含以下内容的文本文件:
您好我的名字#是#
相应的数组是:
0,0,1,1,1,2,2,2,2,3,4,4(序列中每个字母的数字)
第一个散列将出现在2和3之间。因此2代表#之前出现的单词。所以我们计算(2的总数)/ 0,1和2的总数。这将是4/9。
然后我们会在两个哈希之间计算相同的#是#。 'something'对应于4,所以我们将(总数为4)/总数为3和4。 这将是2/3。
然后我们将取2/3和4/9
的平均值我希望这很清楚,如果您需要任何澄清,请告诉我。
答案 0 :(得分:1)
我split()
任何空白字符的字符串。现在我有一个数组中的每个单词,每个单元格的索引代表相应的数字,单元格的内容(单词)长度是'我有多少0或1或......'。
这应该可以解决问题的第一部分。
然后你需要找到每个#
的位置,它的偏移量,但是你要用词来表示的偏移量,而不是字符。所以我将遍历先前创建的数组,并检查我存储的单词是否为#
。如果是,我将更新一个标记变量(这应该保留最后一次看到的#
的前一个位置/索引),并计算你想要的除法(4 / 8,2 / 3 w / e)。这是前一个单元格内容的长度除以从标记到当前索引-1的长度之和。
我认为就是这样;逻辑。实施起来并不难。只是不要忘记检查边界。