神马搜索笔试题目

102 阅读1分钟

1, 在字符中查找第一次出现且不重复的字符 不是很难直接上代码第一种方法

/**

  • [findFirstNoRepeatChar description]
  • 找到字符串中第一个出现且不重复的字符的位置
  • @param {[string]} str [字符串]
  • @return {[type]} [description] */ function findFirstNoRepeatChar(str) { var strObj, i, temp, index;

if (typeof str !== "string") { return; }

strObj = {};

for (i = str.length - 1; i >= 0; i--) { if (!strObj[str[i]]) { strObj[str[i]] = 1; }else { strObj[str[i]]++; }

}

index = str.length - 1; for (var key1 in strObj) { if (strObj[key1] === 1) { temp = str.indexOf(key1); }

if (temp < index) { index = temp; } }

if (index === str.length - 1) { console.log("没有不重复的字符"); }else { return index; }

}

第二种方法: 利用正则查找

function checkFirstChar(str,char) { var reg, regModel;

reg = "[^" + char + "]*"; regModel = new RegExp('^' + reg + char + reg + '$');

return regModel.test(str); }

function findFirstNoRepeatChar(str) {

var i;

if (typeof str !== "string") { console.log("不是字符串"); return; }

for (i = 0; i < str.length; i++) { if (checkFirstChar(str, str[i])) { return str[i]; } }

}

**2016-09-29