2013-11-21 68 views
0

CS學生在這裏。我想編寫一個程序來解壓縮一個已經根據修改後的遊程編碼形式(我已經編寫代碼)編碼的字符串。例如,如果一個字符串包含'bba10',它將解壓縮爲'bbaaaaaaaaaa'。如何讓程序識別字符串('10')的一部分是整數?遊程長度解壓縮

感謝您的閱讀!

+2

詢問是誰寫的壓縮機:) – fvu

+3

更有趣的問題是,你將如何從那裏字符串中包含字面的字符大小寫區分這紈絝子弟'10' – Henry

+0

如果除了那些字符串中沒有數字,那很容易 – MightyPork

回答

-1

假設你沒有問解析,你可以像「10」字符串轉換成這樣一個整數:

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

一位CS的學生在談論解壓,我確定知道如何解析一個字符串到一個整數 – Cruncher

0

不知道這是否是一個有效的方法,但僅作參考

for (int i=0;i<your_string.length();i++) 
    if (your_string.charAt(i)<='9' && your_string.charAt(i)>='0') 
     integer_begin_location = i; 
+0

這是我該怎麼做,但這是不完整的。找到開始位置後,您還需要找到結束位置 – Cruncher

+0

,但完全取決於輸入的字符串格式。 – JQian

+0

你需要第二個循環來找到最終位置嗎? – CSpadawan

4

一個簡單的正則表達式會做。

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(); 
} 
0

我想你可以把在數字,而不是數字符號字符。

當你發現一個數字一個(> 0和< 9)你看看旁邊,然後選擇放大你數(當前* 10 +新)或擴充字符串

0

假設未壓縮的數據不從不包含數字:迭代字符串,逐個字符直到獲得數字。然後繼續,直到你有一個非數字(或字符串結尾)。數字插圖中可以被解析到一個整數別人已經說過:

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