1. 程式人生 > >[LeetCode][演算法初級][字串]39 數數並說 (count and say)

[LeetCode][演算法初級][字串]39 數數並說 (count and say)

題目挺奇怪的,看了一會才知道是什麼意思。。

就是讓你去數一個字串的數字,並且把你說出來的內容作為下一個字串繼續數。

比如:

第一個字串是“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ㄒ)/