JS常见实用算法,不断更新中,欢迎大家提意见
2017-01-13 16:20
260 查看
我叫Altaba,欢迎访问我的博客 时间:2017年1月13
Q1**判断一个单词或者数字是否是回文**
很多人拿到这样的题目非常容易想到用for 将字符串颠倒字母顺序然后匹配就行了。其实重要的考察的就是对于reverse的实现。其实我们可以利用现成的函数,将字符串转换成数组,这个思路很重要,我们可以拥有更多的自由度去进行字符串的一些操作。
/*split(“”)分割字符串,返回一个由字符串每个字符组成的数组
*
reverse()数组方法,颠倒数组中元素的循序,返回颠倒后的数组
*join("")数组方法,将数组元素拼接成字符串返回,拼接方式按()中传入的字符串拼接 */
function Q1(str){
return str.split("").reverse().join("");
}
Q2**去掉一组整型数组重复的值**
//对象["属性名"]==对象.属性名
function Q2(arr){
for(var i= 0,ob={},tep=[],count= 0,le=arr.length;i<le;i++){
if(ob[arr[i]]){
count++;//可以省略,用途不大
}else{
ob[arr[i]]=1;
tep.push(arr[i]);
}
}
arr=tep;
return arr;
}
Q3找出一个字符串出现最多的字符,并统计个数
function Q3(str){
for(var i= 0,ob={},tem= "",le=str.length;i<le;i++){
if(!ob[str[i]]){
ob[str[i]]=0;
}
ob[str[i]]++;
if(tem==""||ob[str[i]]>ob[tem]){
tem=str[i];
} }
console.log("出现次数最多的字符是:"+tem);
console.log("出现的次数:"+ob[tem]);
}
Q4**排序算法冒泡排序法,选择排序法,快速排序法**
function Q4(arr){
for(var i=0;i<arr.length-1;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
var pp=arr[i];
arr[i]=arr[j];
arr[j]=pp;
}
}
}
return arr;
}
**选择排序法**
function Q44(arr){
for(var i= 0,tmp= 0,min= 0,n= 0,le=arr.length;i<le-1;i++){
n=i;
min=arr[i];
for(var j=i+1;j<le;j++){
if(min>arr[j]){
min=arr[j]; n=j;
}
}
tmp=arr[i];
arr[i]=min;
arr
=tmp;
}
return arr;
}
//快速排序法 ......
Q5**不借助临时变量,进行两个整数的交换**
function Q5(a,b){
b=b-a;
a=b+a;
b=a-b;
return[a,b];
}
Q6**找出下列正数组的最大差值**//使用math.max和math.min方法,遍历一遍数组就可以了
function Q6(arr){
var min= arr[0],xxx=0;
for(var i=0;i<arr.length;i++){
var current=arr[i];
min=Math.min(min,current);
var currentxxx=current-min;
xxx=Math.max(xxx,currentxxx);
}
return xxx;
}
//Q7 HTML转义字符,当字符串中有闭合标签的时候,在添加到元素中最为文本或内容的时候,最好需要转义,不然其中标签会被解析。下面在字符串原型上添加了htmlEncode()方法,直接使用就会返回转义后的字符串。
String.prototype.htmlEncode = String.prototype.htmlEncode || function(){
var s = "";
if (!this) return s;
if (this.length == 0) return "";
s = this.replace(/&/g, "&");
s = s.replace(/</g, "<");
s = s.replace(/>/g, ">");
s = s.replace(/ /g, " ");
s = s.replace(/\'/g, "'");
s = s.replace(/\"/g, """);
return s;
};
Q1**判断一个单词或者数字是否是回文**
很多人拿到这样的题目非常容易想到用for 将字符串颠倒字母顺序然后匹配就行了。其实重要的考察的就是对于reverse的实现。其实我们可以利用现成的函数,将字符串转换成数组,这个思路很重要,我们可以拥有更多的自由度去进行字符串的一些操作。
/*split(“”)分割字符串,返回一个由字符串每个字符组成的数组
*
reverse()数组方法,颠倒数组中元素的循序,返回颠倒后的数组
*join("")数组方法,将数组元素拼接成字符串返回,拼接方式按()中传入的字符串拼接 */
function Q1(str){
return str.split("").reverse().join("");
}
Q2**去掉一组整型数组重复的值**
//对象["属性名"]==对象.属性名
function Q2(arr){
for(var i= 0,ob={},tep=[],count= 0,le=arr.length;i<le;i++){
if(ob[arr[i]]){
count++;//可以省略,用途不大
}else{
ob[arr[i]]=1;
tep.push(arr[i]);
}
}
arr=tep;
return arr;
}
Q3找出一个字符串出现最多的字符,并统计个数
function Q3(str){
for(var i= 0,ob={},tem= "",le=str.length;i<le;i++){
if(!ob[str[i]]){
ob[str[i]]=0;
}
ob[str[i]]++;
if(tem==""||ob[str[i]]>ob[tem]){
tem=str[i];
} }
console.log("出现次数最多的字符是:"+tem);
console.log("出现的次数:"+ob[tem]);
}
Q4**排序算法冒泡排序法,选择排序法,快速排序法**
function Q4(arr){
for(var i=0;i<arr.length-1;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
var pp=arr[i];
arr[i]=arr[j];
arr[j]=pp;
}
}
}
return arr;
}
**选择排序法**
function Q44(arr){
for(var i= 0,tmp= 0,min= 0,n= 0,le=arr.length;i<le-1;i++){
n=i;
min=arr[i];
for(var j=i+1;j<le;j++){
if(min>arr[j]){
min=arr[j]; n=j;
}
}
tmp=arr[i];
arr[i]=min;
arr
=tmp;
}
return arr;
}
//快速排序法 ......
Q5**不借助临时变量,进行两个整数的交换**
function Q5(a,b){
b=b-a;
a=b+a;
b=a-b;
return[a,b];
}
Q6**找出下列正数组的最大差值**//使用math.max和math.min方法,遍历一遍数组就可以了
function Q6(arr){
var min= arr[0],xxx=0;
for(var i=0;i<arr.length;i++){
var current=arr[i];
min=Math.min(min,current);
var currentxxx=current-min;
xxx=Math.max(xxx,currentxxx);
}
return xxx;
}
//Q7 HTML转义字符,当字符串中有闭合标签的时候,在添加到元素中最为文本或内容的时候,最好需要转义,不然其中标签会被解析。下面在字符串原型上添加了htmlEncode()方法,直接使用就会返回转义后的字符串。
String.prototype.htmlEncode = String.prototype.htmlEncode || function(){
var s = "";
if (!this) return s;
if (this.length == 0) return "";
s = this.replace(/&/g, "&");
s = s.replace(/</g, "<");
s = s.replace(/>/g, ">");
s = s.replace(/ /g, " ");
s = s.replace(/\'/g, "'");
s = s.replace(/\"/g, """);
return s;
};
相关文章推荐
- 把最新的成果更新了,欢迎大家来提意见
- .NET面试题大全_持续更新,欢迎大家提意见、拍砖 (持续维护中...)
- Java技术联盟:QQ群:50668621争做Java全方位学习群.欢迎大家的加入,共同学习Java系列技术,同时不断更新JavaFx技术的进步..
- 大量学习资料(不断更新中……)欢迎大家索取
- 今天你犯错了吗?(java web tomcat ssh篇)(不断更新中,欢迎大家参与更新)
- 整理了一下Asp.net源码常见问题(完善中...),欢迎大家补充修正(最后更新于06-01)!
- (原创)一些实用的小工具整理,不断更新中。。
- web标准常见问题集合[不断更新]
- ASP.NET常见错误,原因及解决方法(2003版)_不断更新.....
- 一个数独问题的算法(已更新,提供一个简单算法,欢迎拍砖)
- js 实用函数 持续更新-->也许这里有你需要的
- Linux实用命令(不断更新中......)
- Google Earth里的中国太强了!不断更新,欢迎提供线索!(图)
- JS 学习不断更新
- SQL Server数据库备份恢复常见问题(不断更新中)
- 关于数据库的一个统计算法的优化,欢迎大家来讨论(一定要赖心看的)
- 有用的JS效果网址收集(持续更新中,欢迎评论并补充)
- NBearV2视频教学系列总索引,欢迎多提意见和建议[09/21更新至IoC篇]
- asp.net 与oracle 连接的一些常见问题(不断更新中)
- 算法收集(不断更新)