我正在申请java实习,其中一项任务是这样完成的-
平衡词counter -平衡词定义:如果单词中出现的每个字母出现的时间相同,则该单词是平衡的。例如,单词"mama","ear","aabbcbcccbaa"是平衡的,但单词"dad","elephant","abcba"不是平衡的。此外,平衡词不为空。
创建一个" BalancedWordsCounter "类,该类有一个名为" count "的公共方法(您可以创建其他私有方法),该方法必须计算输入单词中存在多少个平衡子词。
- 方法应该接收String (parameter name = " input ")
- 方法应该返回整数
- 输入应该只包含字母,如果文本包含其他字符则抛出异常。
- 如果输入为空,那么方法应该抛出一个异常
创建一个" BalancedWordsCounterTest "并为以下情况创建一个测试方法:
- input = " aabbabcccba " result = 28
- input = " " result = 0
- input = " abababa1 " result = RuntimeException
- input = null result = RuntimeException
我对结果28的测试用例感到困惑——需要做什么才能生成数字28 ?在编码答案之前,我试图将问题可视化,但我得到的唯一合理的想法是这样的-
1 a
2 ab
3 abc
4 2a
5 3a
5 4a
6 2a2b
7 3a3b
8 4a4b
9 ac
10 2a2c
11 3a3c
12 4a4c
13 2b
14 2b2c
15 3b3c
16 4b4c
17 b
18 c
19 3a
20 3b
21 3c
22 bc
23 4b
24 4c
25 2c
26 2a2b2c
27 3a3b3c
28 4a4b4c
但这里的情况是,我将不得不使用4xC,这不是情况。
我错过了什么?
我并不是真的在问现成的解决方案,而是想要一些关于问题到底是什么的见解。
@Edit -对于关于我已经编写的代码的问题-我没有为此产生任何代码,因为我真的不理解这个问题,因此我指望一些洞察问题是什么,因为显然我无法提出其他解决方案,我指定的,但情况是,这不是真正的1:1与问题(它假设字符串有4a 4b和4c,这不是情况);/
要回答的问题是:"子词"是怎样的?定义的。对这个问题的评论表明,"副词"可以被看作是任何你可以"剪切"的词。
对于有问题的输入," aabbabccba"你可以切断这些平衡子词(词本身是不是由给定的定义平衡,因为它包含4 *a
, 4 *b
,但只有3 *c
)
aabbabcccba
a
a
b
b
a
b
c
c
c
b
a
aa
ab
bb
ba
ab
bc
cc
cc
cb
ba
abc
ccc
cba
aabb
abba
aabbab
aabbabccc
在上面的列表中,原始单词在顶部,下面的每个单词都写在原始输入中找到它的位置。当您计算文本中的总行数时,您得到29行,但第一行是原始单词,它是而不是如上所述的平衡,因此结果是28,如预期的那样。