算法练习(js)
1.
问题:Spinal Tap Case
将字符串转换为 spinal case。Spinal case 是 all-lowercase-words-joined-by-dashes 这种形式的,也就是以连字符连接所有小写单词。
spinalCase("This Is Spinal Tap")
应该返回 "this-is-spinal-tap"
。spinalCase("thisIsSpinalTap")
应该返回 "this-is-spinal-tap"
。spinalCase("The_Andy_Griffith_Show")
应该返回 "the-andy-griffith-show"
。spinalCase("Teletubbies say Eh-oh")
应该返回 "teletubbies-say-eh-oh"
。function spinalCase(str) {
//将字符串的按照符号类型分解,如果分解后的数组长度为1也就说明了当前字符串是一个驼峰类型的字符串。
if(str.split(/\W|_/).length==1){
for(var i=0;i<str.length;i++){
if(/[A-Z]/.test(str[i])){
str=str.replace(str[i],"-"+str[i].toLowerCase());
}
}
}else str=str.toLowerCase().split(/\W|_/).join("-");
return str;
} spinalCase('thisIsSpinalTap');
2.
问题:Sum All Odd Fibonacci Numbers
给一个正整数num
,返回小于或等于num
的斐波纳契奇数之和。
斐波纳契数列中的前几个数字是 1、1、2、3、5 和 8,随后的每一个数字都是前两个数字之和。
例如,sumFibs(4)应该返回 5,因为斐波纳契数列中所有小于4的奇数是 1、1、3。
提示:此题不能用递归来实现斐波纳契数列。因为当num
较大时,内存会溢出,推荐用数组来实现。
代码:
function sumFibs(num) {
var fibo=[1,1];
var temp=0;
var nums=2;
while(true){
temp=fibo[0]+fibo[1];
if(temp>num){
return nums;
}
if(temp%2!=0){
nums+=temp;
}
fibo[0]=fibo[1];
fibo[1]=temp;
}
} sumFibs(4);
3.
问题:Sum All Primes
求小于等于给定数值的质数之和。
只有 1 和它本身两个约数的数叫质数。例如,2 是质数,因为它只能被 1 和 2 整除。1 不是质数,因为它只能被自身整除。
给定的数不一定是质数。
代码:
function sumPrimes(num) {
var sum=0;
for(var i=2;i<=num;i++){
var isPN=true;
for(var j=2;j<i;j++){
if(i%j==0){
isPN=false;
break;
}
}
if(isPN) sum+=i; }
return sum;
}
4.
问题:Binary Agents
传入二进制字符串,翻译成英语句子并返回。
二进制字符串是以空格分隔的。
parseInt(string,num) num代表num进制,这个方法可以把任何进制的数转化为十进制; 相应的,a.toString(num),这个方法可以把十进制转化为任何进制的数;
代码:
function binaryAgent(str) {
var arr=str.split(" ");
for(var i=0;i<arr.length;i++){
arr[i]=parseInt(arr[i],2);
arr[i]=String.fromCharCode(arr[i]);
}
str=arr.join("");
return str;
}
算法练习(js)的更多相关文章
- 常见算法是js实现汇总(转载)
常见算法是js实现汇总 /*去重*/ <script> function delRepeat(arr){ var newArray=new Array(); var len=arr.len ...
- 常见排序算法(JS版)
常见排序算法(JS版)包括: 内置排序,冒泡排序,选择排序,插入排序,希尔排序,快速排序(递归 & 堆栈),归并排序,堆排序,以及分析每种排序算法的执行时间. index.html <! ...
- LeetCode 算法题解 js 版 (001 Two Sum)
LeetCode 算法题解 js 版 (001 Two Sum) 两数之和 https://leetcode.com/problems/two-sum/submissions/ https://lee ...
- 全排列算法的JS实现
问题描述:给定一个字符串,输出该字符串所有排列的可能.如输入“abc”,输出“abc,acb,bca,bac,cab,cba”. 虽然原理很简单,然而我还是折腾了好一会才实现这个算法……这里主要记录的 ...
- Twitter面试题蓄水池蓄水量算法(原创 JS版,以后可能会补上C#的)
之前在群里有人讨论Twitter的面试题,蓄水池蓄水量计算,于是自己写了个JS版的(PS:主要后台代码还要编译,想想还是JS快,于是就使用了JS了.不过算法主要还是思路嘛,而且JS应该都没问题吧^_^ ...
- 常见排序算法基于JS的实现
一:冒泡排序 1. 原理 a. 从头开始比较相邻的两个待排序元素,如果前面元素大于后面元素,就将二个元素位置互换 b. 这样对序列的第0个元素到n-1个元素进行一次遍历后,最大的一个元素就“沉”到序列 ...
- 面试题中遇到的算法与js技巧
近一周在忙着面试,本月第一次更博,甚是想念. 基本上大公司都会要求一些算法或者数据结构类的东西,这方面自己还不是很精通,只能一步一个脚印来积累了. 1.查询字符串获取对象数据,可自行根据需求选择格式, ...
- 常见面试算法题JS实现-仅用递归函数和栈操作逆序一个栈
前言: 因为JAVA和JS语言特性的不同,有些东西在JAVA中可能需要一些技巧和手段才能实现的复杂程序,但是在JS中可能就是天然存在的,所以这套书里面的题目不会全部用JS去实现一遍,因为可能JS的实现 ...
- 常见面试算法题JS实现-设计一个有getMin功能的栈
前言: 已经确定工作了-下周一正式入职,按理说应该是可以好好浪荡一周的,但是内心总是不安,总觉得自己这个水平真的太菜了,还是趁着现在有自己的时间,赶紧多看看书,多学习学习吧orz所以把之前校招买的书, ...
- 冒泡排序算法和简单选择排序算法的js实现
之前已经介绍过冒泡排序算法和简单选择排序算法和原理,现在有Js实现. 冒泡排序算法 let dat=[5, 8, 10, 3, 2, 18, 17, 9]; function bubbleSort(d ...
随机推荐
- sublime text 快速编码技巧 GIT图
网上到处都云云sublime有多好.用了一年多的时间,受益匪浅,减少了很多重复性的劳动. 特别是: 1.灵活强大的多行编辑功能: 2.快速查找文件 ctrl + p; 3.正则查找 + 多行编辑; 4 ...
- SSL 证书类型说明: DV OV EV
内容来自: ssl 证书的三种类型: dv (域名型) , ov (企业型) 和 ev (扩展型) OV.DV和EV证书的区别 另外: 浏览器兼容性测试报告 Symantec 证书为什么相比其他证书要 ...
- Hadoop和大数据:60款顶级开源工具(山东数漫江湖)
说到处理大数据的工具,普通的开源解决方案(尤其是Apache Hadoop)堪称中流砥柱.弗雷斯特调研公司的分析师Mike Gualtieri最近预测,在接下来几年,“100%的大公司”会采用Hado ...
- Spring MVC 与 CORS
1. CORS 简介 同源策略(same origin policy)是浏览器安全的基石.在同源策略的限制下,非同源的网站之间不能发送 ajax 请求的. 为了解决这个问题,w3c 提出了跨源资源共享 ...
- 联系博主 Contact
李莫 / Ray OI 蒟蒻一只 / A Player of Olympiad in Informatics QQ:740929894 邮箱 / Email :rayking2017@outlook. ...
- 抓其根本(一)(hdu2710 Max Factor 素数 最大公约数 最小公倍数.....)
素数判断: 一.根据素数定义,该数除了1和它本身以外不再有其他的因数. 详见代码. int prime() { ; i*i<=n; i++) { ) //不是素数 ; //返回1 } ; //是 ...
- poj 1298 The Hardest Problem Ever
题目链接:http://poj.org/problem?id=1298 题目大意:按照所给的顺序要求将输入的字符串进行排列. #include <iostream> #include &l ...
- adb端口被占用解决
解决ADB端口占用问题 方式一5037为adb默认端口,若5037端口被占用,查看占用端口的进程PIDC:\Users\wwx229495>netstat -aon|findstr 5037 ...
- 2017-2018-1 20179205《Linux内核原理与设计》第三周作业
<Linux内核原理与分析>第三周作业 教材学习总结 第三章 进程管理 进程是Unix操作系统抽象概念中最基本的一种,是正在执行的程序代码的实时结果:线程,是在进程中活动的对象.而Linu ...
- DTW 算法(转)
DTW为(Dynamic Time Warping,动态时间归准)的简称.应用很广,主要是在模板匹配中,比如说用在孤立词语音识别,计算机视觉中的行为识别,信息检索等中.可能大家学过这些类似的课程都看到 ...