1.Reverse a String:翻转字符串
先把字符串转化成数组,再借助数组的reverse方法翻转数组顺序,最后把数组转化成字符串。结果必须的得到一个字符串。
资源:Global String Object,String.split(),Array.reverse(),Array.join()。
方法:
function reverseString(str) {
var strToArray = str.split('');
var reverseArray = strToArray.reverse();
str = reverseArray.join('');
return str;
}
2.Factorialize a Number:计算一个整数的阶乘
如果用字母n来代表一个整数,阶乘所代表的是小于等于n的整数的乘积。阶乘通常简写成n!。
方法一:利用while循环
function factorial(num) {
var result = 1;
while(num) {
result *= num;
num--;
}
return result;
}
方法二: 利用函数递归
function factorial(num) {
if(num<=0) {
return 1;
}
else {
return num*argument.callee(num-1);
}
}
方法三: 利用条件运算符
function factorial(num) {
return (num<=0)?1:factorial(num-1);
}
3.Check for Palindromes: 回文算法
如果给定的字符串是回文,返回true,否则,返回false。
如果一个字符串忽略标点符号、大小写和空格,正着读和反着读一模一样,那么这个字符串就是palindrome回文。
资源: String.replace(),String.toLowerCase()。
思路:1.用replace()去掉字符串中的标点符号,空格。
2.将字符串全部转变为小写toLowerCase()。
3.用reverse()判断回文,中间需要一个中间变量用于保存原字符串。
方法: function palindrome(str) {
str = str.replace(/[\|\~|\'|\!|\@|\#|\$|\%|\^|\&|\*|\(|\)|\-|\_|\+|\=...|\?]/g,"");
//正则表达式中涉及到的标点符号可以在键盘中找到
str = str.toLowerCase();
var temp = str.split('').reverse().join('');
return (temp == str)?true:false;
}
4. Find the longest word in a String: 查找字符串中最长的一个单词
找到提供的句子中最长的单词,并计算出它的长度。
资源: String.split(),String.length()。
思路:1.将字符串转化为数组对象split()。
2.得到数组中的每一个元素的长度。
3.比较2中每个元素的长度。找到最大值的那个元素。
4.将该元素输出,转化成字符串,计算其长度,并最终输出。
方法: function findLongestWord(str) {
var Array = str.split('');
var longest = 0;
for(var i=0;i<Array.length;i++) {
if(longest<Array[i].length) {
longest = Array[i].length;
}
}
return longest;
}
5.Title Case a Sentence 首字母大写
确保字符串的每个单词首字母都大写,其余部分都小写。像“the”和“of”这样的连字符同理。
资源:string.split()
思路:1.将字符串转化为数组/先将所有的字符串小写。
2.将数组中每个元素的第一字字母大写[0],toUpperCase(),substring()。
3.将数组转化为字符串。
方法: function titleCase(str) { //将数组中每个元素的首字母大写化
str = str.toLowerCase();
var Array = str.split('');
for(var i=0;i<Array.length;i++) {
Array[i] = Array[i].substring(0,1).toUpperCase() + Array[i].substring(1);
}
str = Array.join('');//将数组转化为字符串并返回字符串
return str;
}
6.Return Largest Numbers in Arrays 返回数组中最大的数
右边大数组中包含了4个小数组,分别找到每个小数组的最大值,然后把它们串联起来,形成一个新数组。
提示:可以用for循环来迭代数组,并通过arr[i]的方式来访问数组的每个元素。
示例:[[4,5,1,3],[13,27,18,26],[32,35,37,39],[1000,1001,857,1]],结果返回[27,5,39,1001]
思路:1.获得大数组的每个元素(小数组)。
2.对获得的小数组,每个进行排序。//sort()按照字母进行排序
3.将每个小数组中最大的数取出添加到新的数组中。
4.返回新数组。
方法: 排序:function sortNumber(a,b) {
return a-b;
}
sort(sortNumber)
可以实现小数组中数字大小的排序。
方法二: function LargestOfFour(rank2Array) {
var newArray = [];
for(var i=0;i<rank2Array.length;i++) {
newArray.push(rank2Array[i].slice().sort(function(a,b){
return a<b;
})[0]);
}
return newArray;
}
方法三:function LargestOfFour(arr){
var newArr = [];
for(var i=0;i<arr.length;i++){
var num = Math.max.apply(null,arr[i]);
newArr.push(num);
}
return newArr;
}
7. Confirm the Ending
检查一个字符串(str)是否以指定的字符串(target)结尾。如果是,返回true,如果不是,返回false。
资源:string.substr()
思路:1.获得字符串最后一个字符/特定的字符。单个字符串/单个单词:最后一个字符,一句话字符串:最后一个单词。
判断:a 先将字符串转化为数组
b 如果数组中元素=1,则取最后一个字符。如果数组中元素>1,则取数组最后一个元素。
2.与特定字符进行比对:相等/相同:true。不等/不同:false。
特殊情况:“He has to give me a new name” "me" ------true
方法:function confirmEnding(str,target) {
return str.substr(-target.length,target.length) === target;
} //换位思考,从target角度思考
语法:str.substr(start[,length])
start是一个字符的索引。首字符的索引为0,最后一个字符的索引为字符串的长度减去1。substr从start位置开始提取字符,提取length个字符(或直到字符 串的末尾)。
如果start值为正值,且大于或等于字符串的长度,则 substr返回一个空字符串。
如果start值为负值,则substr把它作为从字符串末尾开始的一个字符索引。如果start为负值且abs(start)大于字符串的长度,则substr便用0作为开始提取的 索引。注意使用负的start参数不被Microsoft JScript支持。