欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

javascript之编程序题目

程序员文章站 2022-07-05 23:47:30
...
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





-