摘要:字符的左右移动给定一个字符串,这个字符串为号和个字母的任意组合。题目二在一个字符串中找到第一个只出现一次的字符。乘除模拟位运算真正位运算输入一个整数,求从到这个整数的十进制表示中出现的次数。
字符的左右移动
给定一个字符串,这个字符串为号和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));
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/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
阅读 806·2019-08-26 12:16
阅读 1210·2019-08-26 12:13