面試中遇到的那些程式設計題

2021-08-26 05:26:11 字數 3362 閱讀 7712

if(typeof

string.prototype.countcharacters !== 'function'),len = this.length;

for(i = 0;i < len;i++)else

}var max_key,max_num = 0;

for(var key in obj)

}return ;

}}// 測試

var str = "abcdefgsddsfadsl";

var onew = str.countcharacters();

console.log("出現次數最多的字母是:"+onew.max_key+",共出現了"+onew.max_num+"次。");

function

getstrlen

(str);

// 基本漢字 unicode 編碼範圍[4e00,9fa5]

var reg = /[\u4e00-\u9fa5]/;

for(var i = 0;i < str.length;i++)

}return json.len + str.length;

}// 測試

var str = "22糧食";

console.log(getstrlen(str)); // 6

思路:

1.構建乙個新的陣列存放結果

2.for迴圈中每次從原陣列中取出乙個元素,用這個元素迴圈與結果陣列對比

3.若結果陣列中沒有該元素,則存到結果陣列中

// 函式式

function

delarrrepeat

(oldarr)

}return newarr;

}console.log(delarrrepeat([1,2,1,2,3,5,6,8,4,5]));

// 向字串的原型物件上新增方法

if(typeof

array.prototype.delarrrepeat !== "function")

}return newarr;

}}console.log([1,2,1,2,3,5,6,8,4,5].delarrrepeat());

思路:

1.先將原陣列進行排序

2.檢查原陣列中的第i個元素 與 結果陣列中的最後乙個元素是否相同,因為已經排序,所以重複元素會在相鄰位置

3.如果不相同,則將該元素存入結果陣列中

array.prototype.delarrrepeat = function

() }

return newarr;

}console.log([1,2,1,2,3,5,6,8,4,5].delarrrepeat());

思路:

1.建立乙個新的陣列存放結果

2.建立乙個空物件

3.for迴圈時,每次取出乙個元素與物件進行對比,如果這個元素不重複,則把它存放到結果陣列中,同時把這個元素的內容作為物件的乙個屬性,並賦值為1,存入到第2步建立的物件中。

說明:

至於如何對比,就是每次從原陣列中取出乙個元素,

然後到物件中去訪問這個屬性,如果能訪問到值,則說明重複。

array.prototype.delarrrepeat = function

(); for(var i = 0; i < this.length; i++)

}return newarr;

}console.log([1,2,1,2,3,5,6,8,4,5].delarrrepeat());

function

deepclone

(oldobj,newobj);

for(var key in oldobj)else}}

return newobj;

}// 轉殖測試

var arr = [5,8,6,4];

var ojson = ;

var str = 'sdfslk';

var arr2 = deepclone(arr);

var ojson2 = deepclone(ojson);

var str2 = deepclone(str);

console.log(arr,"===",arr2);

console.log(ojson,"===",ojson2);

console.log(str,"===",str2);

function

deepclone

(oldobj) ;

for(var k in oldobj)

return o;

}// 轉殖測試

var arr = [[1, 2, 3], [4, 5, 6, 7]];

var ojson = ;

var str = 'sdfslk';

var arr2 = deepclone(arr);

var ojson2 = deepclone(ojson);

var str2 = deepclone(str);

console.log(arr,"===",arr2);

console.log(ojson,"===",ojson2);

console.log(str,"===",str2);

function

string2int

(s)if (string2int('0') === 0 && string2int('12345') === 12345 && string2int('12300') === 12300) else

if (string2int.tostring().indexof('number') !== -1) else

} else

答:

function string2int(s)).reduce(function(x,y));

//或es6 箭頭函式

//return s.split('').map

(strnum => strnum * 1).reduce

((x, y) => x * 10 + y);}if

(string2int('0') === 0 && string2int('12345') === 12345 && string2int('12300') === 12300) else

if(string2int.tostring().indexof('number') !== -1) else

} else

遇到的面試中的程式設計題總結

一 找出單鏈表的中間元素 思路 1 常規解法 不好 2 兩個指標,乙個指標是另乙個指標移動速度的兩倍,當快的指標指向鍊錶的尾部時,慢的指標就指向了鍊錶的中間元素。同理,可以求出單鏈表的任意倍數的位置,並且只需要掃瞄一遍單鏈表。如求指向單鏈表1 3,1 4,1 5,2 3等位置的元素。二 給定整形陣列...

面試 面試中遇到的演算法題

概念平面內兩條線段位置關係的判定在很多領域都有著廣泛的應用,比如遊戲 cad 圖形處理等,而兩線段交點的求解又是該演算法中重要的一環。本文將盡可能用通俗的語言詳細的描述一種主流且效能較高的判定演算法。為方便計算,對座標點的大小比較作如下定義 x座標較大的點為大,x座標相等但y座標較大的為大,x與y都...

那些我面試遇到的

void setname nsstring str void setname nsstring str 三.簡述單例模式,用 建立乙個單例模式。單例模式的意思就是只有乙個例項。單例模式確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項 五。簡述多執行緒,多執行緒的幾種方法。ios多執行...