我知道我们可以通过以下方式做到这一点
- 字符串生成器
- 使用子字符串
但我正在寻找一种方法,我有一个压缩的字符串说a5b4c2
等,这意味着a
5 次b
是 4 次等,所以字符串实际上aaaaabbbbcc
是这样的。
所以索引 2 处的 char 应该返回 a,索引 6 处的 char 应该返回 b。
什么是最好的方法?
我的问题更多关于解压缩 String 的最佳方法是什么?
我知道我们可以通过以下方式做到这一点
但我正在寻找一种方法,我有一个压缩的字符串说a5b4c2
等,这意味着a
5 次b
是 4 次等,所以字符串实际上aaaaabbbbcc
是这样的。
所以索引 2 处的 char 应该返回 a,索引 6 处的 char 应该返回 b。
什么是最好的方法?
我的问题更多关于解压缩 String 的最佳方法是什么?
我的问题更多是关于处理这个压缩字符串,而不是在特定索引处查找字符。
解压字符串,直到得到你想知道的索引。或者您可以解压缩整个字符串并将其缓存。
什么是最好的方法?
没有任何更具体的要求,我相信最好的方法是你能想到的最简单的方法。
我会依次解析每对字母和数字,将索引减少该数字,如果剩余索引 < 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
循环将正确的字符编号附加到您的字符串......对我来说听起来是最简单的方法。