Partition Labels (Medium)(kotlin)
fun partitionLabels(S: String): List<Int> {
var listNumber = arrayListOf<Int>()
var stringMap= hashMapOf<Int,Int>()
//所有字母最后的坐标存储
for(i in 0 until S.length){
stringMap.put(S[i]-'a',i)
}
var start = 0
var last = 0
var preindex = 0;
while (start<S.length){
//遍历坐标当前坐标和字母所在位置坐标大小,移动标记为字母最后坐标
if (stringMap[S[start]-'a']!! >last) {
last =stringMap[S[start]-'a']!!
}
//是否当前最标和当前字母最后坐标吻合,吻合既切断当前最小重复字符位置因为坐标从0开始,数数时+1
if(start==last){
if(listNumber.size==0){
listNumber.add(start+1)
start = last+1
preindex=start
}else{
listNumber.add(start-preindex+1)
start = last+1
preindex=start
}
}else{
start++
}
}
return listNumber
}
抄答案抄了4个小时,难过哦。终于弄懂了。kt还坑了我一下