gpt4 book ai didi

java - 递归解压缩字符串

转载 作者:行者123 更新时间:2023-12-02 05:11:23 25 4
gpt4 key购买 nike

我正在尝试使用递归技术来解压缩字符串。我有一个适用于某些代码的代码,并给我一个错误,例如 Exception in thread "main"java.lang.NumberFormatException: For input string: ""

例如,当我发送像 4a4b4c 或 40A5B10c 这样的字符串时,它工作得很好。当使用类似于“a9T3b5R6t3h2g4v5b4n”的字符串时会出现错误

这是我的代码

public static  void main(String[] args){
System.out.println(uncompress("a9T3b5R6t3h2g4v5b4n"));
}

public static String uncompress(String Text){
return uncompress(Text, "", "");
}

public static String count(char ch, int n){
if(n == 0){return "";}
return "" + ch + count(ch, n-1);
}

public static String uncompress(String Text, String count, String output){
if(Text.equals("")){
return output;
}
if(Character.isLetter(Text.charAt(0))){
output += count(Text.charAt(0), Integer.parseInt(count));
count = "";
}
else if(Character.isDigit(Text.charAt(0))){
count += ("" + Text.charAt(0));
}


return uncompress(Text.substring(1), count, output);
}

最佳答案

只需处理 NumberFormatException(NFE),然后如果第一个输入是字符串,则采用替代解决方案,然后保留它。我不太确定我的解释,欢迎更正。只是想帮忙。 TIA。

public static  void main(String[] args){
System.out.println(uncompress("abasd4a4b4c"));
}

public static String uncompress(String text){
return uncompress(text, "", "");
}

public static String count(char ch, int n){
if(n == 0){return "";}
return "" + ch + count(ch, n-1);
}

public static String uncompress(String text, String count, String output){
if(text.equals("")){
return output;

}else if(Character.isLetter(text.charAt(0))){
try{
output += count(text.charAt(0), Integer.parseInt(count));
}catch(NumberFormatException nfe){
output += text.charAt(0);
}
count = "";
}else if(Character.isDigit(text.charAt(0))){
count += ("" + text.charAt(0));
}
return uncompress(text.substring(1), count, output);
}

输出:

abasdaaaabbbbcccc

关于java - 递归解压缩字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27309750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com