一、題目描述:
求一個字符串的最大回文前綴長度?;匚氖侵刚捶较蜃x起來都一樣的字符串,比如“abcdcba”就是一個回文。
輸入
一個文本文件,至少包含一個字節(jié)。每個字節(jié)是一個字符。最大長度可能有幾十萬字節(jié)。
輸出
最大回文前綴的長度。
樣例輸入
Sogou
樣例輸出
$(function(){
$('#btn0').click(function(){
var input0=$('#input0').val();
var floor=Math.floor(input0.length/2);
var count=0;
if(input0.length%2==0){
for(var i=0,j=input0.length-1;i<floor,j>=floor;i++,j--){
if(input0.charAt(i)==input0.charAt(j)){
count++;
}
}
}else{
for(var i=0,j=input0.length-1;i<floor,j>floor;i++,j--){
if(input0.charAt(i)==input0.charAt(j)){
count++;
}
}
}
$('#area').html(count);
});
});
二、題目描述:
定義兩個大于2的偶數(shù)之間的距離,為這兩個數(shù)之間質(zhì)數(shù)的個數(shù)。從小到大輸入n個大于2的偶數(shù),輸出所有數(shù)兩兩之間距離的總和(應(yīng)該有n*(n-1)/2個距離,輸出總和就好)。
輸入
第一行是輸入偶數(shù)的個數(shù),最小為2,最大可能到幾萬。之后每行為一個偶數(shù),最小是4,最大可能是幾百萬,不重復(fù)的升序排列。
輸出
輸入數(shù)據(jù)兩兩間距離的總和,這應(yīng)該是一個不小于0的整數(shù)。
樣例輸入
3
4
6
12
樣例輸出
6
$(function(){
var num=0;
var arr=[];
num=prompt("請輸入偶數(shù)的個數(shù)(最小為2):");
if(num<2){
num=prompt("請輸入偶數(shù)的個數(shù)(最小為2):");
}
for(var i=0;i<num;i++){
var cur=prompt("請輸入第"+(i+1)+"個偶數(shù):");
if(cur%2!=0){
cur=prompt("請輸入第"+(i+1)+"個偶數(shù):");
}
arr[i]=parseFloat(cur);
}
var count=0;
for(var i=0;i<arr.length;i++){
var curi=arr[i];
for(var j=i+1;j<arr.length;j++){
var curj=arr[j];
for(var r=curi+1;r<curj;r++){
for(var s=2;s<r;s++){
if(r%s==0){
break;
}else if(s==r-1){
count++;
}
}
}
}
}
var html=num+'<br/>';
for(var i=0;i<arr.length;i++){
html+=arr[i]+'<br/>';
}
html+=count+'<br/>';
$('#area').html(html);
});
三、【編程】寫入一個方法,輸入一個文件名和一個字符串,統(tǒng)計這個字符串在這個文件中出現(xiàn)的次數(shù)。
<input type="file" value="" onchange="readFile(event)" id="input0"/>
function readFile(event){
var str="index";
var str_file="";
var file = event.target.files[0];
var reader = new FileReader();
reader.onload = function(event) {
// 文件里的文本會在這里被打印出來
str_file+=event.target.result;
var count=str_file.split(str).length-1;
$('#area').html(count);
};
reader.readAsText(file);
}
四、編寫一個函數(shù)實現(xiàn)form的序列化(即將一個表單中的鍵值序列化為可提交的字符串)
<form id="form0">
<input type="text" value="text" name="text" />
<select name="select">
<option value="">請選擇</option>
<option value="1" selected>是</option>
<option value="0" >否</option>
</select>
<select name="selectMuilt" multiple="multiple">
<option value="">請選擇</option>
<option value="1" selected>選項1</option>
<option value="0" selected>選項2</option>
<option value="0">選項3</option>
</select>
<textarea name="textarea">textare</textarea>
<label><input type="checkbox" checked name="checkbox" value="1" />多選1</label>
<label><input type="checkbox" checked name="checkbox" value="2" />多選2</label>
<label><input type="checkbox" name="checkbox" value="3" />多選3</label>
<label><input type="radio" name="radio" value="1" />單選1</label>
<label><input type="radio" name="radio" value="2" checked />單選2</label>
</form>
<srcipt>
var obj={};
var $form=$('#form0');
//text,textarea,select
$value0=$form.find('input[type=text],textarea,select');
for(var i=0;i<$value0.length;i++){
obj[$($value0[i]).attr('name')]=$($value0[i]).val();
}
//checkbox
$value1=$form.find('input[type=checkbox]:checked');
var cur='';
for(var i=0;i<$value1.length;i++){
cur+=$($value1[i]).val()+',';
obj[$($value1[i]).attr('name')]=cur;
}
//radio
$value2=$form.find('input[type=radio]:checked');
for(var i=0;i<$value2.length;i++){
obj[$($value2[i]).attr('name')]=$($value2[i]).val();
}
return obj;
</script>

五、請用js原生代碼寫出數(shù)組去重的函數(shù),并考慮到執(zhí)行效率。
var arr=[2,4,1,2,4,5,2,5,6,7,8,22,53];
var newArr=[];
for(var i=0;i<arr.length;i++){
if(newArr.indexOf(arr[i])==-1){
newArr.push(arr[i]);
}
}
alert(newArr);
六、
【題目描述】
真是一個無聊的夜晚啊,小B和小C在宿舍中實在無聊之極,因此決定玩一個數(shù)字游戲打發(fā)時間。小B首先開始,她給小C的問題是:
給定任意一個整數(shù),小C可以交換該數(shù)中任意的不同位,能夠得到的最小數(shù)值是多少?前提是不能有前導(dǎo)0。
小C很快就給出了一個答案,小B希望你來幫她檢驗答案的正確性,你能幫忙嗎?
輸入
輸入中有多組測試數(shù)據(jù)。每組測試數(shù)據(jù)的第一行為一個沒有前導(dǎo)0的整數(shù)n(0=< n =< 109),第二行為另一個整數(shù)m(0=<m=<109),小C給出的問題答案。
輸出
對每組測試數(shù)據(jù),在單獨(dú)的行中輸出結(jié)果,若小C的答案是正確的,輸出YES,否則輸出NO。
樣例輸入
3310
1033
4
5
樣例輸出
YES
NO
var ques=prompt("請輸入數(shù)字:");
var ans=prompt("請輸入答案:");
var arr=ques.split("");
arr=arr.sort(compare);
if(arr[0]=='0'){
for(var i=1;i<arr.length;i++){
if(arr[i]!='0'){
arr[0]=arr[i];
arr[i]='0';
break;
}
}
}
var res=arr.join("");
var result='NO';
if(res==ans){
result='YES';
}
alert(result);
function compare(val0,val1){
if(val0>val1){
return 1;
}else if(val0<val1){
return -1;
}else{
return 0;
}
}
七、【題目描述】
小B對腦筋急轉(zhuǎn)彎問題很有興趣,她覺得這種問題的挑戰(zhàn)能夠反映一個人的應(yīng)急反應(yīng)能力。她正在開發(fā)一個智力測試的游戲,游戲的主角是一個螞蚱。螞蚱最初位于0點(diǎn)處,可以在直線上向正向或反向兩個方向跳躍。比較特別的是,螞蚱每次跳躍的距離比前一次跳躍多一個單位,第一次跳躍的距離為一個單位。
小B的問題是,如果讓螞蚱跳躍到x處,需要經(jīng)過多少次跳躍,你能解決這個問題嗎?
輸入
輸入中有多組測試數(shù)據(jù)。每組測試數(shù)據(jù)為單獨(dú)的一行,包含一個整數(shù)x(-10^9 =< x =< 10^9)。
輸出
對每組測試數(shù)據(jù),在單獨(dú)的行中輸出螞蚱最少需要跳躍的次數(shù)。
樣例輸入
2
6
0
樣例輸出
3
3
0
//思路:開始讓螞蚱一直往向所在方向向前跳,在跳下一步之前先判斷當(dāng)前所在的位置加上下一步要跳的距離是否會超過所要到的位置。
var step=1;
var cur=0;
var x=parseInt(prompt("輸入:"));
var count=0;
if(cur!=x){
do{
if(cur+step<=x){
cur+=step;
step++;
count++;
}else if(cur+step>x){
cur-=step;
step++;
count++;
}
}while(cur!=x);
}
alert(count);
八、根據(jù)Unix時間戳計算時間,不分大小月,每月30天,每年按360天計算。
開始時間1970/01/01 00:00:00,輸入秒數(shù),顯示時間
例如,輸入:
2
1
12345678
輸出
1970/01/01 00:00:01
1970/05/23 21:21:18
//思路一:進(jìn)位,60秒進(jìn)1分鐘,60分進(jìn)1小時,24小時進(jìn)1天,30天進(jìn)1月,12月進(jìn)1年,依次建立循環(huán)
var year=1970;
var month=1;
var day=1;
var hh=0;
var mm=0;
var ss=0;
var num=parseInt(prompt('輸入秒數(shù):'));
while(num>60){
num-=60;
mm++;
if(mm==60){
mm-=60;
hh++;
if(hh==24){
hh-=24;
day++;
if(day==30){
month++;
day-=30;
if(month==12){
year++;
month-=12;
}
}
}
}
}
ss+=num;
alert(year+'/'+fillZero(month)+'/'+fillZero(day)+" "+fillZero(hh)+":"+fillZero(mm)+":"+fillZero(ss));
function fillZero(val){
if(val<10){
val='0'+val;
}
return val;
}