Last active
August 29, 2015 14:01
-
-
Save jikeytang/f46ce22363dedecb8a13 to your computer and use it in GitHub Desktop.
[ Javascript ] - 20140522-题目2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。 | |
PS: | |
1. 回复时注意加上下面这句话,才会有语法高亮或格式缩进。 | |
```javascript | |
// you code | |
``` | |
2. 粘贴代码时请使用shift+tab,缩进前面的空白。 | |
3. 经测试,test方法轻松获胜。 | |
http://jsperf.com/only-occur-once |
wzc602003869
commented
May 22, 2014
var r, re;
var s = "abaccdeff";
re = /b/ig;
r = s.match(re);
console.log(r[0]);
function getFirst(str){
var arr=str.split(""),
regs=null;
for(var i=0;i<arr.length;i++){
regs=new RegExp("("+arr[i]+")","g");
if(str.match(regs).length==1){
return (arr[i]);
}
}
}
console.log(getFirst("aabbcgrcdeff"));
function find(str){
var arr = str.split(''), one;
for(var i = 0; i < arr.length; i++){
one = arr[i];
if((str.split(one).length - 1) == 1){
return one;
}
}
}
console.log(find('abaccdeff'));
var get_one = function(str){
str = str || 'abaccedf';
var one, i =0;
do{
one = str.charAt(i);
if(!one || str.split(one).length ===2){
return !one ? null : one; // 有人知道 String.prototype.split 算法复杂度吗? 总感觉这样写复杂度也会很大啊
}
i++;
}while(1)
}
function getOneChar(str) {
for (var i = 0, len = str.length; i < len; i++) {
if (str.split(str.charAt(i)).length === 2) {
return str.charAt(i);
}
}
}
getOneChar("abaccedf"); // b
@mailzwj getonechar 给力。
//没有找到纯正则的解决办法
var str = 'abaebaccdeff';
var r = /(.).*\1+/;
var m;
while(m = str.match(r)) {
str = str.replace(new RegExp(m[1], 'g'), '');
}
console.log(str[0]);
//可惜js只支持?=和?!两种断言,如果是找重复出现的字符就简单了"abaccdeff".match(/(.)(?=.*\1)/gi)
function getUniqueChars(s) {
var result = s;
s.replace(/(.)(?=.*\1)/gi, function (match) {
result = result.replace(new RegExp(match, "gi"), "");
});
return result;
}
getUniqueChars("abaccdeff")[0];
function getChar( str ){
for( var i=0; i < str.length; i ++ ){
var judge = true;
for( j = 0; j <str.length; j ++ ){
if( i == j ) continue ;
if( str[i] == str[j] ){
judge = false;
break;
}
};
if( judge ) return str[i]
}
}
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment