题目描述
分析
本题采用两重循环嵌套,第一重决定了需要对字符串进行几次处理,比如输入4,则需要对“1”做三次处理。在对字符串的处理操作中,是先把最后一次的字符串转变为字符数组然后从头开始遍历,如果下一个数和当前数相同,则计数加一,当不同的时候,就把计数结果和字符内容追加到临时字符串末尾,在遍历的时候需要注意下标的范围。每次变化后更新字符串,变化几次之后返回最终的结果。
题解
class Solution {
func countAndSay(_ n: Int) -> String {
var str = "1"
if n == 0 {
return ""
}
for _ in 1..<n {
var temp = ""
var count = 1
var chars = Array(str)
for j in 0..<chars.count {
if j + 1 < chars.count && chars[j] == chars[j + 1] {
count += 1
}else {
temp.append("\(count)")
temp.append(chars[j])
count = 1
}
}
str = temp
}
return str
}
}