每週一題:第一個出現的字元+交換數字(更新JS)
阿新 • • 發佈:2020-07-18
題目一:
在字串 s 中找出第一個只出現一次的字元。如果沒有,返回一個單空格。 s 只包含小寫字母。
示例:
s = "abaccdeff"
返回 "b"
s = ""
返回 " "
程式碼:
varfirstUniqChar=function(s){ if(s==''){ return""; } for(leti=0;i<s.length;i++){ if(s.lastIndexOf(s[i])==s.indexOf(s[i])){ returns[i]; } } return""; }; 通過率: 思路: 這道題需要我們在字串裡面找出第一個只出現一次的字母,首先我們需要考慮字串為空的情況,將這種情況單獨列出來後,再來尋找。 一開始我是想通過遍歷迴圈來計算每個字母出現的次數,然後比較每個字母次數大小找到只出現一次字母,接著比較陣列下標,最小的那個字母即為第一個只出現一次的。但在後期實現程式碼時發現極易混淆,時間效率也頗為低下,便放棄了這種方法,轉而開始尋找有哪種方法能夠比較快捷的得出結果的,後來發現了js裡面的indexOf 和 lastIndexOf 函式用法,便用這個寫出了程式碼。- indexOf是查某個指定的字串在字串首次出現的位置(索引值)(從左往右)
- lastIndexOf 是查某個指定的字串在字串最後一次出現的位置(索引值)(從右往左)
而且值得注意的是:lastIndexOf() 方法可返回一個指定的元素在陣列中最後出現的位置,是從該字串的後面向前查詢,其雖然是從後往前搜尋,但返回的位置是從前開始數的。
題目二:編寫一個函式,不用臨時變數,直接交換numbers = [a, b]
中a
與b
的值。
示例:
輸入:numbers=[1,2]
輸出:[2,1]
程式碼:
varswapNumbers=function(numbers){ numbers[0]=numbers[0]+numbers[1]; numbers[1]=numbers[0]-numbers[1]; numbers[0]=numbers[0]-numbers[1]; returnnumbers; }; 通過率: