亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

js的面試題

js的面試題

西蘭花偉大炮 2017-04-06 00:16:55
用兩種方法實現找出1到1000之間的對稱數,如121,2882
查看完整描述

4 回答

已采納
?
千秋此意

TA貢獻158條經驗 獲得超188個贊

function?isSymmetrically(number)?{
????return?number?>=?10?&&?number.toString().split('').reverse().join('')?===?number.toString();
}

function?isSymmetrically(number)?{
????return?number?>=?10?&&?Number((function(s)?{?//?此處由于非尾遞歸性能可能稍微有所降低~
????????return?!s.length???''?:?arguments.callee(s.slice(1))?+?s[0];
????})(number.toString()))?===?number;
}

其實就何樓上說的差不多,主要就是數字反轉之后和原數字相等就行了(同時排除10以下數字),循環的方法樓上都有幾種了,我這里寫了一個數組方法反轉一個遞歸調用反轉的方法~

查看完整回答
3 反對 回復 2017-04-06
?
qq_馳兮_0

TA貢獻4條經驗 獲得超3個贊


//方法1
????????for(var?i=1;i<10;i++){
????????????for(var?j=1;j<10;j++){
????????????????if(i==j){
????????????????????console.log(i*10+j);
????????????????}
????????????}
????????}
????????for(var?i=1;i<10;i++){
????????????for(var?j=0;j<10;j++){
????????????????for(var?z=0;z<10;z++){
????????????????????if(i==z){
????????????????????????console.log(i*100+j*10+z);
????????????????????}
????????????????}
????????????}
????????}
????????//方法二
????????for(var?i=1;i<=1000;i++){
????????????if(check(i)){
????????????????console.log(i);
????????????}
????????}
????????function?check(i){
????????????var?arr=i.toString().split('');
????????????if(arr[0]==arr[arr.length-1]&&arr.length>1){
????????????????return?true;
????????????}else{
????????????????return?false;
????????????}
????????}


查看完整回答
2 反對 回復 2017-04-06
?
ruibin

TA貢獻358條經驗 獲得超213個贊

很簡單。主要是要分類。第一是10~99.十位數和個位數相同就對稱了。十位數怎么獲取parseInt(str/10);個位數怎么獲取 str%10然后等于個位數就取出來。

第二是100到999.主要是獲取百位數和個位數相等就行。百位數怎么獲?。簆arseInt(str/100),個位數怎么獲取(str%10)。思路已經告訴你了,具體還得自己動手!很多時候,多動手才能學好編程~

查看完整回答
2 反對 回復 2017-04-06
?
ziom

TA貢獻948條經驗 獲得超1109個贊

<script?type="text/javascript">
????????/*?方法一?*/
????????//?檢查num是否是對稱數
????????function?checkNum(num)?{
????????????num?=?String(num);
????????????var?length?=?num.length;
????????????if?(length?<?2)?return?false;
????????????for?(var?i?=?0;?i?<?Math.floor(length/2);?i++)?{
????????????????if?(num.charAt(i)?!=?num.charAt(length-1-i))?{
????????????????????return?false;
????????????????}
????????????}
????????????return?true;
????????}
????????for?(var?i?=?1;?i?<=?1000;?i++)?{
????????????if?(checkNum(i))?{
????????????????console.log(i);
????????????}
????????}

????????/*?方法二?*/
????????//?傳入兩個區間值,打印出兩數之間的所有對稱數
????????function?printTC(num0,?num1)?{
????????????//?這種方式有點復雜,想半天下不了手,我放棄了。。。
????????}

????</script>


查看完整回答
1 反對 回復 2017-04-06
?
高jay

TA貢獻96條經驗 獲得超122個贊

1000以內的就簡單了,首先就用純全算法思路,循環1000,if(i<100)i除以10向下取整如果等于i除以10的余數輸出i i>100就改成i除以100向下取整跟除以10的余數相等輸出i。第二種就是字符串思路,小于100字符串切割前兩位相等輸出,大于100第一位跟第三位相等輸出。
查看完整回答
1 反對 回復 2017-04-06
?
ziom

TA貢獻948條經驗 獲得超1109個贊

2882在1-1000間嗎

查看完整回答
1 反對 回復 2017-04-06
點擊展開后面1
  • 4 回答
  • 3 關注
  • 2489 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號