遞歸:
// 聲明字符串
var strings = 'sdfdasmfadsfjkldasfjdaisfjiodasfjkdsafzxcvozjxalk'
//? 定義一個存放返回最終結(jié)果的對象
var result = {name:'', length:0}
var str, length;? ? ? ? // 每次遞歸時绣否,用到的變量客年,當前字符和重復(fù)數(shù)量
(function(strings){
? ? if(!strings){? ? ? ? ?// 7. 如果字符串為空,return
? ? ? ? return?
????}
? ? str = strings[0];? ? ? ? ? ? // 1. 取字符串第一個字符
????length = strings.length;? ? // 2. 取當前字符串的總長度籍琳,默認為原始長度
? ? strings = strings.replace(new RegExp(str,'g'), '')? ? // 3. 把字符串中所有匹配的第一個字符替換為空
? ? length = length - strings.length? ? // 4. 取到第一個字符串重復(fù)數(shù)量
? ? if(length > result.length){? ? ?// 5. 如果 當前字符重復(fù)數(shù)量 大于 之前取到的最大重復(fù)數(shù)量蝌数,設(shè)置result
? ? result.name = str;
? ? result.length = length
????}?
? ? arguments.callee(strings)? ? // 6. 遞歸操作? ? ? ?關(guān)于arguments.callee()
})(strings)
console.log(result)? ? // {name: "s", length: 7}
循環(huán):
function getRepeatObj(str){
? ? var obj = {name: '', len:0}
? ? var arr = str.split('').sort()? ? for(var i in arr){
? ? ? ? var curlen = arr.lastIndexOf(arr[i]) - arr.indexOf(arr[i]) + 1
? ? ? ? if(curlen > obj.len){
? ? ? ? ? ? obj.len = curlen
? ? ? ? ? ? obj.name = arr[i]
????????}
????}? ? return obj
}getRepeatObj('abcdb')? ? // {name:'b', len: 2}