题目描述:
Java语言递归解法:
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param str string字符串
* @return string字符串
*/
public String compress (String str) {
// write code here
int left = -1;
int mid = -1;
int right = -1;
//for循环找到最里面的一组括号组合
for(int i = 0;i<str.length();i++){
if(str.charAt(i)=='['){
left = i;
}else if(str.charAt(i)=='|'){
mid = i;
}else if(str.charAt(i)==']'){
right = i;
break;
}
}
//递归出口 当解决完所有的括号组合之后 结束递归
if(left==-1&&mid==-1&&right==-1){
return str;
}
String strNum;
String strTemp;
strNum = str.substring(left+1,mid); //数字的字符串形式
int num = strToNum(strNum);//将字符串转换为数字
strTemp = str.substring(mid+1,right);
String s = "";
for(int i = 0;i<num;i++){ //拼接括号内的字符串
s+=strTemp;
}
//接着处理外层的括号组合
return compress(str.substring(0,left)+s+str.substring(right+1));
}
//数字的字符串形式转换为数字
public int strToNum(String str){
int num = 0;
for(int i = 0;i<str.length();i++){
num+=(str.charAt(i)-48)*Math.pow(10,str.length()-1-i);
}
return num;
}
}