LeetcodeInJS--String(持續更新)
709 toLowerCase
- 難度:easy
-
初始思路:大寫字母ASCII範圍65-90,小寫字母ASCII範圍97-122,func_大寫轉小寫即為val+32
resultStr = '' for(str) { if (str[i] in 大寫字母ASCII碼範圍) { resultStr + = func_大寫轉小寫(str[i]) } else { resultStr += str[i] } } return resultStr
- 複雜度:時間 O(N), 空間 O(1)
-
優化:
第一次優化:使用正則判斷字元是否處於大寫字母ASCII碼範圍,只有處於該範圍內才進行進行轉ASCII處理,結果複雜度不變,減少了轉換ASCII碼的次數。實現如下:
var toLowerCase = function(str) { let resultStr = ''; for (let i=0, strLen=str.length; i<strLen; i++) { let tempChar = str[i]; resultStr += /[A-Z]/.test(tempChar)? String.fromCharCode(tempChar.charCodeAt()+32) : tempChar; } return resultStr; };
804 uniqueMorseRepresentations
- 難度:easy
- 初始思路:使用Set儲存計算結果
- 複雜度: 時間:雙for=>O(n^2), 空間:最差情況即全部字串Morse碼不同時為O(n)
-
實現:
var uniqueMorseRepresentations = function(words) { let morseArr = [".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]; let set = new Set(); for (let i=0, wordsLen=words.length; i<wordsLen; i++) { let tempMorseStr = ''; for (let j=0, word=words[i]; j<word.length; j++) { tempMorseStr += morseArr[word[j].charCodeAt() - 97]; } set.add(tempMorseStr); } return set.size; };
- 優化:暫無