摘要:字符的左右移動給定一個字符串,這個字符串為號和個字母的任意組合。題目二在一個字符串中找到第一個只出現一次的字符。乘除模擬位運算真正位運算輸入一個整數,求從到這個整數的十進制表示中出現的次數。
字符的左右移動
給定一個字符串,這個字符串為號和26個字母的任意組合。現在需要把字符串中的號都移動到最左側,而把字符串中的字母移到最右側并保持相對順序不變,要求時間復雜度和空間復雜度最小。
var stars = "sosunn**afns*repsni*"; var rs = stars.split(""); var flag = 0; for(var i=rs.length -1; i>=0; i--){ if(rs[i] == "*"){ flag++; }else{ if(flag == 0) continue; else{ rs[i+flag] = rs[i]; rs[i] = "*"; } } } console.log(rs.join(""))map妙用
題目一:
給定一個字符串,寫一個函數,查找出該字符串中每個字符出現的次數,要求區分大小寫,且時間復雜度為O(n)。
var str = "safaAuasfAJIFjHDWEFHDaAueUEWda"; var results = {}; var rs = str.split(""); rs.forEach(function(al){ if(results[al] === undefined){ results[al] = 1; }else{ results[al]++; } }) var keys = Object.keys(results); for(var i = 0; i < keys.length; i++){ console.log(keys[i] + " : " + results[keys[i]]); }
題目二:
在一個字符串中找到第一個只出現一次的字符。如輸入abaccdefbf,則輸出d。
var str = "abaccdefbf"; var results = {}; var rs = str.split(""); rs.forEach(function(al){ if(results[al] === undefined){ results[al] = 1; }else{ results[al]++; } }) var keys = Object.keys(results); for(var i = 0; i < keys.length; i++){ if(results[keys[i]] === 1){ console.log(keys[i]); break; } }
題目三:
最近在壇子里的問題,其實活用map,很容易就解決了,問題在這:https://segmentfault.com/q/1010000004891... ,就是json格式重整。我的解答如下:
var json1 = { ... }; var jmap = {}; var result = []; json1.forEach(function(al){ var key = al.menuDate + "_" + al.dinnerTime; if(typeof jmap[key] === "undefined"){ jmap[key] = []; } jmap[key].push(al); }) var keys = Object.keys(jmap); for(var i = 0; i < keys.length; i++){ var rs = keys[i].split("_"); result.push({menuDate:rs[0],dinnerTime:rs[1],value:jmap[keys[i]]}); }位運算
輸入一個整數,求該整數的二進制表達中有多少個1。
1.乘除模擬位運算:
(function(aInt){ var intStr = [], count = 1; while(aInt > 1){ if(aInt % 2 == 0){ intStr.unshift(0); }else{ intStr.unshift(1); count++; } aInt = Math.floor(aInt/2); } intStr.unshift(1); console.log("Binary String : " + intStr.join(",")); console.log("The count is : " + count); }(28));
2.真正位運算:
(function(aInt){ var intStr = [], count = 0; while(aInt > 0){ var cur = aInt & 1; intStr.unshift(cur); if(cur == 1){ count++; } aInt = aInt >> 1; } console.log("Binary String : " + intStr.join(",")); console.log("The count is : " + count); }(10));
輸入一個整數n,求從1到n這n個整數的十進制表示中1出現的次數。
(function(aInt){ var count = 0; for(var i = 1; i <= aInt; i++){ var a = i; while(a >= 1){ if(a % 10 == 1){ count++; } a= Math.floor(a / 10); } } console.log("The count is : " + count); }(13));
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/79044.html
摘要:前端面試題及答案總結掘金技術征文金三銀四,金九銀十,用來形容求職最好的幾個月。因為的存在,至少在被標準化的那一刻起,就支持異步編程了。然而異步編程真正發展壯大,的流行功不可沒。 showImg(https://segmentfault.com/img/bVVQOH?w=640&h=319); 1、2017前端面試題及答案總結 |掘金技術征文 金三銀四,金九銀十,用來形容求職最好的幾個月...
摘要:與異步編程按照維基百科上的解釋獨立于主控制流之外發生的事件就叫做異步。因為的存在,至少在被標準化的那一刻起,就支持異步編程了。然而異步編程真正發展壯大,的流行功不可沒。在握手過程中,端點交換認證和密鑰以建立或恢復安全會話。 1、前端 排序算法總結 排序算法可能是你學編程第一個學習的算法,還記得冒泡嗎? 當然,排序和查找兩類算法是面試的熱門選項。如果你是一個會寫快排的程序猿,面試官在比較...
摘要:與異步編程按照維基百科上的解釋獨立于主控制流之外發生的事件就叫做異步。因為的存在,至少在被標準化的那一刻起,就支持異步編程了。然而異步編程真正發展壯大,的流行功不可沒。在握手過程中,端點交換認證和密鑰以建立或恢復安全會話。 1、前端 排序算法總結 排序算法可能是你學編程第一個學習的算法,還記得冒泡嗎? 當然,排序和查找兩類算法是面試的熱門選項。如果你是一個會寫快排的程序猿,面試官在比較...
摘要:與異步編程按照維基百科上的解釋獨立于主控制流之外發生的事件就叫做異步。因為的存在,至少在被標準化的那一刻起,就支持異步編程了。然而異步編程真正發展壯大,的流行功不可沒。在握手過程中,端點交換認證和密鑰以建立或恢復安全會話。 1、前端 排序算法總結 排序算法可能是你學編程第一個學習的算法,還記得冒泡嗎? 當然,排序和查找兩類算法是面試的熱門選項。如果你是一個會寫快排的程序猿,面試官在比較...
閱讀 1572·2021-11-25 09:43
閱讀 2476·2019-08-30 15:54
閱讀 2938·2019-08-30 15:53
閱讀 1087·2019-08-30 15:53
閱讀 747·2019-08-30 15:52
閱讀 2538·2019-08-26 13:36
閱讀 807·2019-08-26 12:16
閱讀 1210·2019-08-26 12:13