游程减压

CS学生在这里。 我想编写一个程序来解压缩已经根据运行长度编码的修改forms编码的字符串(我已经编写了代码)。 例如,如果一个字符串包含’bba10’,它将解压缩为’bbaaaaaaaaa’。 如何让程序识别字符串(’10’)的一部分是整数?

谢谢阅读!

一个简单的正则表达式会做。

 final Matcher m = Pattern.compile("(\\D)(\\d+)").matcher(input); final StringBuffer b = new StringBuffer(); while (m.find()) m.appendReplacement(b, replicate(m.group(1), Integer.parseInt(m.group(2)))); m.appendTail(b); 

replicate的地方

 String replicate(String s, int count) { final StringBuilder b = new StringBuilder(count); for (int i = 0; i < count; i++) b.append(s); return b.toString(); } 

不确定这是否是一种有效的方式,但仅供参考

 for (int i=0;i='0') integer_begin_location = i; 

我认为你可以用数字而不是数字符号来区分字符。

当你找到一个数字(> 0和<9)时,你会看到下一个并选择放大你的数字(当前* 10 +新)或扩大你的字符串

假设未压缩的数据永远不会包含数字:逐个字符地逐字符号迭代,直到得到一个数字。 然后继续,直到你有一个非数字(或字符串结尾)。 中间的数字可以解析为其他已经说明的整数:

 int count = Integer.parseInt(str.substring(start, end)); 

假设您没有询问解析,可以将类似“10”的字符串转换为如下整数:

 int i = Integer.parseInt("10");