回覆列表
  • 1 # 使用者3830279780080

    經典的解答思路為:取出字串的第一個字元(首字母),利用的字串的replace方法將符合正則表示式(第一個字元)替代為空,此字母出現的次數為原始的字串長度減去替代後的字串長度。迴圈迭代找出長度最長的字母。<br><script type=text/javascript<br>//<![cdata[<br>var str =adadfdfseffserfefsefseeffffftsdg; //命名一個變數放置給出的字串<br>var maxlength = 0; //命名一個變數放置字母出現的最高次數並初始化為0<br>var result = ""; //命名一個變數放置結果輸入<br>while( str != "" ){ //迴圈迭代開始,並判斷字串是否為空<br> oldstr = str; //將原始的字串變數賦值給新變數<br> getstr = str.substr(0,1); //用字串的substr的方法得到第一個字元(首字母)<br> eval(str = str.replace(/+getstr+/g,"")); //詳細如補充<br> if( oldstr.length-str.length maxlength ) { //判斷原始的字串的長度減去替代後字串長度是否大於之前出現的最大的字串長度<br>maxlength = oldstr.length-str.length; //兩字串長度相減得到最大的字串長度<br>result = getstr + = + maxlength //返回最大的字串結果(字母、出現次數)}}alert(result) //彈出結果//]]</script 補充: eval(str = str.replace(/+getstr+/g,""));<br> 可能很多人想這樣寫str = str.replace(/getstr/g,""),可結果卻是會出錯的。為什麼呢,在這句中正則表示式匹配的是getstr字串,而不是getstr指向的首字母。透過eval方法可以避免(首先getstr得到指向的首字母,用字串連線str = str.replace(/+getstr+/g,""),最後在eval中執行這段程式碼,即:先解釋javascript程式碼,然後再執行它)。

  • 中秋節和大豐收的關聯?
  • 形影不離類似的詞語?