在压缩字符串中查找特定索引处的字符的最佳方法

时间:2013-04-23 10:48:14

标签: java

我知道我们可以通过以下方式实现这一目标

  1. 的StringBuilder
  2. 使用子字符串
  3. 但我正在寻找一种方法,我有一个压缩的字符串说a5b4c2等,这意味着a是5倍b是4倍等所以字符串实际上是aaaaabbbbcc类似的东西。

    因此索引2处的char应该返回a并且索引6处的char应该返回b。

    最好的办法是什么?

    我的问题更多的是解压缩String的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

  

我的问题更多的是关于处理这个压缩字符串而不是在特定索引处找到字符。

解压缩字符串,直到获得想要知道的索引。或者你可以解压缩整个字符串并缓存它。

  

最好的办法是什么?

如果没有更具体的要求,我相信最好的方法是你能想到的最简单的方法。


我会依次解析每一对字母和数字,用该数字减少索引,如果剩下的索引是< 0你有你想要的那封信。

答案 1 :(得分:0)

检查您要搜索的索引,然后开始累计字符数。每次添加时,检查索引是否在上一个时间间隔内和当前时间间隔内。如果是这样,你就找到了你的角色,否则再添加一次。

例如,给定字符串a5b4c2的工作流,如果您希望索引为7的字符,可以是这样的:

   current position: 0
   index we are looking for: 7
   add first character's count: 0+5 = 5
   does 7 fall within 0 and 5? no, add again
   current position: 5
   add second character's count: 5+4 = 9
   does 7 fall within 5 and 9? yes, so our character must be 'b'.

我不确定这是否比解压缩字符串更有效或更快,只是使用charAt()或其他东西,它只是一种不同的方法来接近它。

编辑:由于问题更多是关于如何解压缩字符串,您可以使用StringBuilder并使用for循环将正确数量的字符附加到字符串中......声音对我来说最简单的方式。