所以我试着在搜索中寻找这个,但我能找到的最接近的是几种不同语言的相似答案,我想用Javascript来做。
问题是我有一个任意的字符串,我想返回第一个不重复的字符。例如:'aba‘->将返回b 'aabcbd’->将返回c。这就是我到目前为止所知道的,只是启动一个简单的for循环。
var someString = 'aabcbd';
var firstNonRepeatedCharacter = function(string) {
for(var i = 0; i < someString.length; i++){
}
};
http://jsfiddle.net/w7F87/不确定从这里到哪里去
发布于 2014-07-17 08:38:56
您可以使用indexOf
方法查找不重复的字符。如果您查找字符串中的字符,它将是第一个找到的字符,您不会在它后面找到另一个字符:
function firstNonRepeatedCharacter(string) {
for (var i = 0; i < string.length; i++) {
var c = string.charAt(i);
if (string.indexOf(c) == i && string.indexOf(c, i + 1) == -1) {
return c;
}
}
return null;
}
发布于 2014-07-17 08:37:51
var firstNonRepeatedCharacter = function(string) {
var chars = string.split('');
for (var i = 0; i < string.length; i++) {
if (chars.filter(function(j) {
return j == string.charAt(i);
}).length == 1) return string.charAt(i);
}
};
因此,我们创建一个包含所有字符的数组,通过对任何字符进行拆分。
然后,我们遍历每个字符,并过滤我们创建的数组,因此我们将得到一个只包含这些字符的数组。如果长度曾经是1,我们知道我们有一个不重复的字符。
发布于 2014-07-17 08:46:38
两种进一步的可能性,使用ECMA5数组方法。如果不存在,将返回undefined
。
Javascript
function firstNonRepeatedCharacter(string) {
return string.split('').filter(function (character, index, obj) {
return obj.indexOf(character) === obj.lastIndexOf(character);
}).shift();
}
console.log(firstNonRepeatedCharacter('aabcbd'));
在jsFiddle上
或者如果您想要更好的性能,特别是在更长的字符串上。
Javascript
function firstNonRepeatedCharacter(string) {
var first;
string.split('').some(function (character, index, obj) {
if(obj.indexOf(character) === obj.lastIndexOf(character)) {
first = character;
return true;
}
return false;
});
return first;
}
console.log(firstNonRepeatedCharacter('aabcbd'));
在jsFiddle上
https://stackoverflow.com/questions/24793051
复制相似问题