javascript之编程序题目

[b]1. 判断两个字符串是否:字母相同切长度相同(空格不算)。[/b]
即它们是: anagrams
例如:
1. "listen" 与 "silent"
2. "this is a Tomcat" 与 "Tom has a tisict"

function isAnagrams(a, b){
a = a.replace(/ /g, '').split('').sort();
b = b.replace(/ /g, '').split('').sort();
if(a.length != b.length)return false;

var i = 0;
for(;i<a.length;i++){
if(a[i] != b[i]) return false;
}
return true;
}

var a = 'this is a Tomcat';
var b = 'Tom has a tisict';
isAnagrams(a,b);



或者是:

function isAnagrams(a, b){
a = a.replace(/ /g, '').split('').sort().join('');
b = b.replace(/ /g, '').split('').sort().join('');
return a == b;
}


更严谨一些:

function isAnagrams(a, b){
function valid(obj){
return toString.call(obj) === "[object String]";
}
function convert(str){
return str.replace(/ /g, '').split('').sort().join('');
}

if(valid(a) && valid(b)){
return convert(a) == convert(b);
}
return false;
}



[b]注:[/b]
多记住一些 Array 和 String 的原生方法,
可以快速简洁的写出面试题。


[b]2. 写一个add函数,可以这样调用: add(1)(2), add(1,2)[/b]


[b]3. 写出一个字符串中某字符串出现的次数[/b]
提示: String.split()

function times(){


}


[b]4. 打印 json object 的所有节点和子节点[/b]
提示: for(property in node )

function printNodes(){

}


[b]5. 统计一个字符串中,某个字符串出现的 index [/b]

方法一:
使用:
[url=https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf]String.prototype.indexOf(searchValue)[/url]
[url=https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substr]String.prototype.substr(start) [/url]


function getIndexList1(str, pattern){
var arrlist = [];
var index = str.indexOf(pattern);
var last = 0;
while(index != -1 && str.length > 0){
arrlist.push(last + index);
var subIndex = index + pattern.length;
last += subIndex;
str = str.substr(subIndex);
index = str.indexOf(pattern);
}
return arrlist;
}



方法二:
使用:
[url=https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf]String.prototype.indexOf(searchValue[, fromIndex])[/url]


function getIndexList2(str, pattern){
var arrlist = [];
var index = str.indexOf(pattern);
while(index > 0){
arrlist.push(index);
index = str.indexOf(pattern, arrlist[arrlist.length-1] + pattern.length);
}
return arrlist;
}



[b]对比:[/b]不够简洁的代码(注意 if 和 while 的用法)


function getIndexList(str, pattern){
var arrlist = [];
var index = str.indexOf(pattern,arrlist[arrlist.length-1]);
if(index > 0) {
arrlist.push(index);
while(index > 0){
index = str.indexOf(pattern,arrlist[arrlist.length-1]+ pattern.length);
if(index > 0)arrlist.push(index);
}
}
return arrlist;
}



方法三:[url=https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions]使用 Regular Expression[/url]

正则表达式在 JavaScript 中也是对象的一种。它可以用在:

1) RegExp 对象的 test(), exec() 方法中
2) String 对象的 match(), replace(), search(), split() 方法中




function getIndexList(str, pattern){
var arrlist = [];
var myRe = new RegExp(pattern,'g');
var result;
while ((result = myRe.exec(str)) !== null) {
arrlist.push(result.index);
}
return arrlist;
}



-
转载请注明:
原文出处: http://lixh1986.iteye.com/blog/2335628


-
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值