【诉求】
A是一段音频,它有个长度是9秒,A_2就是播放A段音频的前2s。传入播放的时间time,效果是播放对应时常的音频。抽象出来:time = 输出音频的种类对应的长度
str audioList = [A,B,C]
Int audioLength = [9,9,10]
All_audio_Length = 28
time
如果播放时间time是7s,播放A_7
如果播放时间time是14s,播放A + B_5
如果播放时间time是20s,播放A + B + C_2
如果播放时间time是30s,播放A + B + C + A_2
【实现】
import org.codehaus.plexus.util.StringUtils;
public class AudioPlay {
public static String method(int time){
String result = "";
String[] audioList = new String[]{"A","B","C"};
int[] audioLengthList = new int[]{9,9,10};
int curTime = 0;
int i = 0;
while (time > curTime) {
for (; i < audioList.length; i++ ){
curTime += audioLengthList[i];
if (StringUtils.isNotBlank(result)) {
result += " + ";
}
if (time > curTime) {
result += audioList[i];
continue;
} else if (time == curTime) {
result += audioList[i];
break;
} else if (time < curTime) {
int needless = curTime - time;
int need = audioLengthList[i] - needless;
result += audioList[i] + "_" + need;
break;
}
}
i = i%audioList.length;
}
return result;
}
}