此代碼是針對用戶計算機出現問題的問題而設計的,每次他/她點擊退格按鈕時都會顯示'<'符號。創建的程序應該修復此問題並輸出預期的字符串,因爲'<'代表退格。輸入字符串最長可達10^6個字符,並且只能包含小寫字母和'<'。如何優化代碼去除不需要的字符
我的代碼似乎正確執行,但是,當我提交它時,網站說它超過了測試5/25的時間限制。給出的時間是1秒。另外,如果只有'<'符號,它不應該產生輸出。
例如,
"hellooo<< my name is matthe<<"
將輸出
"hello my name is matt"
和
"ssadfas<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
將輸出什麼,等等
下面是代碼:
input = gets.chomp
while input[/[[:lower:]]</]
input.gsub!(/[[:lower:]]</, "")
end
input.gsub!(/</, "")
puts"#{input}"
在上述餘留在while
循環,如果存在其中小寫字母是在一個「<」前任何實例的代碼。在任何一個小寫字母后面跟着'<',它都會被替換爲無。一旦while
循環退出,如果有任何「<」符號,它們將被替換爲無。然後顯示最後一個字符串。
我創建了一個測試,我認爲這是對我的代碼,最糟糕的情況:
input = ("a" + "<" + "a")*10000000
#input = gets.chomp
while input[/[[:lower:]]</]
input.gsub!(/[[:lower:]]</, "")
end
input.gsub!(/</, "")
puts"#{input}"
我所做的創建的字符串和while
循環的執行之間,然後程序停止運行它完全以如果花費時間超過一秒鐘,就能夠吸引眼球。它似乎需要比1秒更長的時間。
如何修改爲更快或有更好的方法來做到這一點?
你說的輸入可高達10^6個字符,但你似乎對3 * 10^7進行測試?當我在我的筆記本電腦上針對10^6個字符長的輸入運行代碼時,大約需要三分之一秒。 – smarx
字符串包含空格以及小寫字母和'<'。退格會刪除空格嗎?最好編輯澄清。 –
嘗試#3 ..... –