平衡字符串计数器



我正在申请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,如预期的那样。

最新更新