[LeetCode][演算法初級][字串]39 數數並說 (count and say)
阿新 • • 發佈:2019-01-07
題目挺奇怪的,看了一會才知道是什麼意思。。
就是讓你去數一個字串的數字,並且把你說出來的內容作為下一個字串繼續數。
比如:
第一個字串是“1”,你就要數:"1個1!",同時寫下”11“作為下一個字串。
然後你再數”2個1!“同時寫下”21“. 然後再數”1個2,1個1 !“,那麼下一個字串就是”1211“。。。。
以此類推。
由於這個題目需要頻繁用到字串的拼接,c語言實在是不方便了,改用ruby小天使。
# @param {Integer} n # @return {String} def count_and_say(n) str = "1" (n-1).times do cnt = 1 prev = str[0]; ans = "" for j in 1..str.size - 1 do c = str[j] if c==prev cnt+=1 else ans << cnt.to_s << prev prev = c cnt = 1 end end ans << cnt.to_s << prev str = ans end return str end
感覺做了這麼多題目下來,很難在幾次提交之內通過測試。不是粗心的語法錯誤,就是邊界條件的錯誤。
邊界條件的考慮感覺就是想不過來,非得一次次除錯,才能得到正確的答案。
/(ㄒoㄒ)/