3

我知道我们可以通过以下方式做到这一点

  1. 字符串生成器
  2. 使用子字符串

但我正在寻找一种方法,我有一个压缩的字符串说a5b4c2等,这意味着a5 次b是 4 次等,所以字符串实际上aaaaabbbbcc是这样的。

所以索引 2 处的 char 应该返回 a,索引 6 处的 char 应该返回 b。

什么是最好的方法?

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

4

2 回答 2

2

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

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

什么是最好的方法?

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


我会依次解析每对字母和数字,将索引减少该数字,如果剩余索引 < 0,则您拥有所需的字母。

于 2013-04-23T10:50:33.490 回答
0

检查您要搜索的索引,然后开始累加字符数。每次添加时,检查索引是否在前一个区间和当前区间内。如果是,你已经找到你的角色是什么,否则再次添加。

例如,给定您的 string 的工作流程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()或其他方法更有效或更快,这只是一种不同的处理方式。

编辑:由于问题更多是关于如何解压缩字符串,因此您可以使用 aStringBuilder并使用for循环将正确的字符编号附加到您的字符串......对我来说听起来是最简单的方法。

于 2013-04-23T10:54:31.187 回答