搜狗2018校招
题目描述:
搜狗汪仔机器人在参加一站到底节目录制时,被问到一个问题:“对任意长度字符串,删除其中的任意的N(N>=0)个字符,能形成多少种不同的子字符串呢?”请使用Javascript编码扩展String的delete方法帮助汪仔解决这个问题。
测试用例:
function test(){
return 'sogou'.delete(0)===1;
}
JS代码:
/**
* Created by CC on 2017/10/10.
*/
String.prototype.delete=function(n){
var result=[];
var arr=this.split("");
if(n>=this.length)
return 1;
else
{
var sublength=arr.length-n;
getsub(arr);
console.log(result);
return result.length;
}
function getsub(arr){
if(sublength<arr.length)
{
for(var i=0;i<arr.length;i++)
{
var newarr=arr.concat();
newarr.splice(i,1);
getsub(newarr);
}
}
else
{
if(result.indexOf(arr.join(""))==-1)
result.push(arr.join(""));
}
}
}
//测试
var str='aaacde';
console.log('删除0个字符');
console.log('子字符串数:'+str.delete(0)); //1
console.log('删除1个字符');
console.log('子字符串数:'+str.delete(1)); //4
console.log('删除2个字符');
console.log('子字符串数:'+str.delete(2)); //7
console.log('删除3个字符');
console.log('子字符串数:'+str.delete(3)); //8
题目描述:
HTML+CSS+JavaScript实现以下功能:当用户点击页面里所有a标签时,如果其链接里包含数字,则点击该链接时提示用户“改链接存在风险,是否继续点击?”用户只有点击确认才打开该链接。
代码:<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div>
<!--测试链接-->
<a href="https://www.baidu.com">链接1</a>
<a href="http://www.jb51.net/article/35535.htm">链接2</a>
</div>
<script type="text/javascript">
var arr=document.getElementsByTagName('a');
var reg=/\d/;
for(var i=0;i<arr.length;i++)
{
if(reg.test(arr[i].href)) {
arr[i].οnclick=function(){
if(confirm('该链接存在风险,是否继续点击!'))
return true;
else
return false;
}
}
}
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div>
<!--测试链接-->
<a href="https://www.baidu.com">链接1</a>
<a href="http://www.jb51.net/article/35535.htm">链接2</a>
</div>
<script type="text/javascript">
var arr=document.getElementsByTagName('a');
var reg=/\d/;
for(var i=0;i<arr.length;i++)
{
if(reg.test(arr[i].href)) {
arr[i].οnclick=function(){
if(confirm('该链接存在风险,是否继续点击!'))
return true;
else
return false;
}
}
}
</script>
</body>
</html>