FreeCodeCamp 前端初级算法(个人向)
freecodecamp 初级算法地址戳这里
Reverse a String
翻转字符串
function reverseString(str) {
str=str.split("").reverse().join("");
return str;
}
reverseString("hello")
Factorialize a Number
计算一个整数的阶乘
function factorialize(num) {
if(num>1){
num=num*factorialize(num-1);
}else{
num=1;
}
return num;
}
factorialize(5);
Check for Palindromes
如果给定的字符串是回文,返回true,反之,返回false。
function palindrome(str) {
// Good luck!
var str1=str.toLowerCase().replace( /[\(\)\s.,/_-]/g,"" );
var str2=str1.split("").reverse().join("");
return str1==str2;
}
8 palindrome("eye");
Find the Longest Word in a String
找到提供的句子中最长的单词,并计算它的长度。
function findLongestWord(str) {
var arr=str.split(" ");
var max=0;
for(let a of arr){
max=a.length>max?a.length:max;
}
return max;
}
findLongestWord("The quick brown fox jumped over the lazy dog");
Title Case a Sentence
确保字符串的每个单词首字母都大写,其余部分小写。
function titleCase(str) {
var arr=str.split(" ");
for(var i in arr){
var len=arr[i].length;
var word=arr[i].toLowerCase();
if( len==1 ){
arr[i]=word.toUpperCase();
}else{
arr[i]=word.substring(0,1).toUpperCase()+word.substring(1,len);
}
}
str=arr.join(" ");
return str;
}
titleCase("I'm a little tea pot");
Return Largest Numbers in Arrays
右边大数组中包含了4个小数组,分别找到每个小数组中的最大值,然后把它们串联起来,形成一个新数组。
function largestOfFour(arr) {
// You can do this!
var max=[];
for(var i in arr){
let bigger;
for(var j in arr[i]){
bigger=bigger?( arr[i][j]>bigger?arr[i][j]:bigger ):arr[i][j];
}
max.push(bigger);
}
return max;
}
largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
Confirm the Ending
检查一个字符串(str)是否以指定的字符串(target)结尾
function confirmEnding(str, target) {
// "Never give up and good luck will find you."
// -- Falcor
var str1=str.replace( new RegExp(target,"g"),"|");
var flag=str1.lastIndexOf("|");
return flag==str1.length-1?true:false;
}
confirmEnding("Bastian", "n");
Repeat a string repeat a string
重复一个指定的字符串 num次,如果num是一个负数则返回一个空字符串。
function repeat(str, num) {
// repeat after me
var str1=str;
if( num<=0 ){
str1="";
}
while( num>1 ){
str1+=str;
num--;
}
return str1;
}
repeat("abc", 3);
Truncate a string
如果字符串的长度比指定的参数num长,则把多余的部分用...来表示。
function truncate(str, num) {
// Clear out that junk in your trunk
var index;
if( str.length>num ){
if ( num<=3 ){
index=num;
}else{
index=num-3; //-3是减去...的长度
}
str=str.slice(0,index)+"...";
}
return str;
}
truncate("A-tisket a-tasket A green and yellow basket", 11);
Chunky Monkey
把一个数组arr按照指定的数组大小size分割成若干个数组块。
function chunk(arr, size) {
// Break it up.
var arr2=[];
var max=Math.ceil( arr.length/size );
for(var i=0;i<max;i++){
arr2.push( arr.slice(i*size,i*size+size) );
}
return arr2;
}
chunk(["a", "b", "c", "d"], 2);
Slasher Flick
返回一个数组被截断n个元素后还剩余的元素,截断从索引0开始。
function slasher(arr, howMany) {
// it doesn't always pay to be first
arr.splice(0,howMany);
return arr;
}
slasher([1, 2, 3], 2);
Mutations
如果数组第一个字符串元素包含了第二个字符串元素的所有字符,函数返回true。
function mutation(arr) {
var main=arr[0].toLowerCase();
var search=arr[1].toLowerCase().split("");
for(var a in search){
if( main.indexOf( search[a] )==-1 ){
return false;
}
}
return true;
}
mutation(["hello", "hey"]);
Falsy Bouncer
删除数组中的所有假值。
function bouncer(arr) {
// Don't show a false ID to this bouncer.
return arr.filter(isTrue);
}
function isTrue(ele){
if( ele ){
return ele;
}
}
bouncer([7, "ate", "", false, 9]);
Seek and Destroy
实现一个摧毁(destroyer)函数,第一个参数是待摧毁的数组,其余的参数是待摧毁的值。
function destroyer() {
// Remove all the values
var arr=[].shift.apply( arguments );
var vals=arguments;
var arr2=arr.filter(function(ele){
for(var i=0,l=vals.length;i<l;i++){
if( ele==vals[i] ){
return false;
}
}
return true;
});
console.log(arr2);
return arr2;
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3);
Where do I belong
先给数组排序,然后找到指定的值在数组的位置,最后返回位置对应的索引。
function where(arr, num) {
// Find my place in this sorted array.
arr.push(num);
var index=arr.sort(function(a,b){
return a-b;
}).indexOf(num);
return index;
}
where([40, 60], 50);
Caesars Cipher
下面我们来介绍风靡全球的凯撒密码Caesar cipher,又叫移位密码。
写一个ROT13函数,实现输入加密字符串,输出解密字符串。
function rot13(str) { // LBH QVQ VG!
var arr=str.split(" ");
var result=[];
for(var i in arr){
result.push( word(arr[i],13) );
}
return result.join(" ");
}
function word(str,num){
var res="";
for(var i=0,l=str.length;i<l;i++){
res+=String.fromCharCode( char(str.charCodeAt(i),num) );
}
return res;
}
function char(old,add){
//65-90 A-Z
//97-122 a-z
var res;
var cha;
if( old>=65 && old<=90 ){
cha=old+add-90;
res=cha<=0?old+add:65+cha-1;
}else if( old>=97 && old<=122 ){
cha=old+add-122;
res=cha<=0?old+add:97+cha-1;
}else{
res=old;
}
return res;
}
// Change the inputs below to test
rot13("SERR PBQR PNZC");
FreeCodeCamp 前端初级算法(个人向)的更多相关文章
- 互联网公司前端初级Javascript面试题
互联网公司前端初级Javascript面试题 1.JavaScript是一门什么样的语言,它有哪些特点?(简述javascript语言的特点)JavaScript是一种基于对象(Object)和事件驱 ...
- LeetCode初级算法的Python实现--排序和搜索、设计问题、数学及其他
LeetCode初级算法的Python实现--排序和搜索.设计问题.数学及其他 1.排序和搜索 class Solution(object): # 合并两个有序数组 def merge(self, n ...
- LeetCode初级算法的Python实现--链表
LeetCode初级算法的Python实现--链表 之前没有接触过Python编写的链表,所以这里记录一下思路.这里前面的代码是和leetcode中的一样,因为做题需要调用,所以下面会给出. 首先定义 ...
- LeetCode初级算法的Python实现--字符串
LeetCode初级算法的Python实现--字符串 # 反转字符串 def reverseString(s): return s[::-1] # 颠倒数字 def reverse(x): if x ...
- LeetCode初级算法的Python实现--数组
LeetCode初级算法的Python实现--数组 # -*- coding: utf-8 -*- """ @Created on 2018/6/3 17:06 @aut ...
- LeetCode初级算法(动态规划+设计问题篇)
目录 爬楼梯 买卖股票的最佳时机 最大子序和 打家劫舍 动态规划小结 Shuffle an Array 最小栈 爬楼梯 第一想法自然是递归,而且爬楼梯很明显是一个斐波拉切数列,所以就有了以下代码: c ...
- LeetCode初级算法(数组)解答
这里记录了LeetCode初级算法中数组的一些题目: 加一 本来想先转成整数,加1后再转回去:耽美想到测试的例子考虑到了这个方法的笨重,所以int类型超了最大范围65536,导致程序出错. class ...
- 【LeetCode算法】LeetCode初级算法——字符串
在LeetCode初级算法的字符串专题中,共给出了九道题目,分别为:反转字符串,整数反转,字符串中的第一个唯一字符,有效的字母异位词,验证回文字符串,字符串转换整数,实现strStr(),报数,最 ...
- LeetCode探索初级算法 - 动态规划
LeetCode探索初级算法 - 动态规划 今天在LeetCode上做了几个简单的动态规划的题目,也算是对动态规划有个基本的了解了.现在对动态规划这个算法做一个简单的总结. 什么是动态规划 动态规划英 ...
随机推荐
- 企业项目如何打包成.ipa文件
首先准备好企业的项目,真机和申请好的正式证书,关于企业证书的申请此处不再写,可以参考网上相关的教程,本人并未参与证书申请,所以此处不敢乱写. 1.找到正式证书与描述文件,双击打开(需要密码,这个要问申 ...
- AngularJS学习--- AngularJS中模板链接和图像 ng-src step6
接上一篇文章,本文将主要介绍angularjs中的模板链接,和图像显示? 首先,切换分支,启动项目: git checkout step- npm start 1.效果 相较于前一篇文章,明显感觉多了 ...
- JVM 基础知识
JVM 基础知识(GC) 2013-12-10 00:16 3190人阅读 评论(1) 收藏 举报 分类: Java(49) 目录(?)[+] 几年前写过一篇关于JVM调优的文章,前段时间拿出来看了看 ...
- Centos7 php 5.6.19编译安装
0x01 前言 在php官网下载php-5.6.19.tar.gz源代码(php7虽然说性能提升很大,但是小菜菜还是先用着这个先吧),解压后根目录有个INSTALL文件,里面有安装教程了,目录如下: ...
- iOS静态库.a文件制作和导入使用
iOS静态库.a文件制作: 1.新建Cocoa Touch Static Library工程 新建工程 - 选择iOS-FrameWork&Libary,选择 Cocoa Touch Stat ...
- mysql: symbol lookup error: /usr/local/lib/libreadline.so.6: undefined symbol: UP
Error Symptom: when you run $mysql -u root -p command in the linux you get an error message ” mysql: ...
- Eclipse的安装和java环境变量的设置
首先准备工作是要下载好Eclipse和java JDK. 必须要注意的是,Eclipse和java JDK必须下载同一位数的版本,即64位同为64位,32位同为32位.否则在安装完成运行Eclipse ...
- C#winform中调用wpf(转)
在WinForm中是可以使用WPF中的控件(或者由WPF创建的自定义控件) 1.新建一个winform项目: 2.在解决方案上新建一个wpf项目: 如图: 如果有如下错误,就在winform中的引用添 ...
- 9月15日,YTFCloud,创业圈的技术新宠
成都创业圈近期什么最热? 资本复苏?这本来就是高低起伏规律而已,再说动辄千万的大手笔,对于创业新人.新团队来说太遥远,早期根本无法变现,而资金紧张.项目开发费用超标.没有技术大牛保障等尖锐现实问题能否 ...
- Replace Pioneer 续用2
软件介绍(摘自百度百科) Replace Pioneer(中文名:替换先锋)是Mind Pioneer出品的一款共享软件. Replace Pioneer是一款与众不同的专业文本批量替换和处理软 ...