题目:输入一个字符串,然后这个字符串中出现数字n的话,就把这个数字的
前面所有字符重复n-1遍,以此类推,然后返回最后生成的字符串的第k位
输入:一个字符串
输出:一个字符串的第k位
思路: 遍历字符串,然后遇见数字 就把之前的字符串重复一波,以此类推,最后返回第k位不过最后导致内存溢出了,很尴尬,说明此路不通
别人思路:因为是求第K位,所以先按照题目要求,找到包含第K位的新字符串的最小长度确定了我们已经足够的长度之后,在往回退,如果是数字,就要除以这个数字, 变成单倍数的字符串,相应的,第K个也要变成单倍数的,最后找到对应的字符,并输出。
比如,对于一个解码了的字符串,appleappleappleappleappleapple,并且要求的索引K=24的话,那么结果和K=4是一样的。因为单词apple的size=5,重复了6次。所以第K个索引和第K%size个索引是一样的。
class solution{
public String decodeAtIndex(String S, int K) {
long index = 0 ;
int i ;
for(i=0;index<K;i++){
if(S.charAt(i)>='a'&&S.charAt(i)<='z'){
index ++ ;
}else{
index = index * (S.charAt(i) - '0') ;
}
}
i -- ;
while(i >= 0){
if(S.charAt(i)>='2'&&S.charAt(i)<='9'){
index = index / (S.charAt(i) - '0') ;
K = K % Integer.parseInt(index+"") ;
}else{
if(K % index == 0){
return S.charAt(i)+"" ;
}
index -- ;
}
i -- ;
}
return "" ;
}
}