javascript之编程序题目

1. 判断两个字符串是否:字母相同切长度相同(空格不算)。
   即它们是: 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;
}



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



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



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

function times(){


}


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

function printNodes(){

}



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

    方法一:
    使用:
           String.prototype.indexOf(searchValue)
           String.prototype.substr(start)

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;
}



    方法二:
    使用:
           String.prototype.indexOf(searchValue[, fromIndex])

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;
}



对比:不够简洁的代码(注意 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;
}



    方法三: 使用 Regular Expression

    正则表达式在 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





-


猜你喜欢

转载自lixh1986.iteye.com/blog/2335628
今日推荐