经典的解答思路为:取出字符串 的第一个字符(首字母), 利用的字符串的 replace 方法将符合正则表达式(第一个字符)替代为空,此字母出现的次数为原始的字符串长度减去替代后的字符串长度。循环迭代找出长度最长的字母。
补充: eval("str = str.replace(/"+getStr+"/g,'')");
可能很多人想这样写str = str.replace(/getStr/g,''),可结果却是会出错的。为什么呢,在这句中正则表达式匹配的是getStr字符串,而不是 getStr指向的首字母。通过eval方法可以避免(首先getStr得到指向的首字母,用字符串连接"str = str.replace(/"+getStr+"/g,'')",最后在eval中执行这段代码,即:先解释Javascript代码,然后再执行它)。
PS: 指出eval性能不好,容易出错,而且可读性不好 。建议将eval("str = str.replace(/"+getStr+"/g,'')")改为:
str = str.replace(new RegExp(getStr,"g"),"")