Javascript:确定字符串中的所有字符是否都是唯一的,如果不是,则删除重复字符
Javascript: Determine if all characters in a string are unique and if not, delete duplicate characters
用a[letter][occurences]
设置一个数组,但努力循环遍历这个数组,以检查occurences > 1
并删除那些。
function charFreq(s) {
var i, j;
var a = new Array();
for (j = 0; j < s.length; j++) {
for (i = 0; i < a.length; i++) {
if (a[i][0] == s[j]) {
a[i][1]++;
break;
}
}
if (i == a.length) {
a[i] = [s[j], 1];
}
}
return a[i][0];
}
document.write(charFreq("insert string here"));
这是我到目前为止想出的混乱:
function check(str) {
var c;
for (c=0; c < a.length; c++) {
if(a[c][1] == 1) {
return true;
break;
} else {
return false;
}
}
}
使用 ES6 Set:
// :: unique = Array<any>|string => Array<any>
const unique = xs => [...new Set(xs)]
const dedupe = str => unique(str).join('')
console.log(
unique('foo'), // => ['f', 'o']
dedupe('foo'), // => 'fo'
)
不要那样做。
function noDups( s ) {
var chars = {}, rv = '';
for (var i = 0; i < s.length; ++i) {
if (!(s[i] in chars)) {
chars[s[i]] = 1;
rv += s[i];
}
}
return rv;
}
alert(noDups("Shoe fly pie, and apple pan dowdy")); // Shoe flypi,andw
随着字符串的长度变长,代码会变慢,其速度大致等于字符串长度的平方。
若要从字符串中删除重复字符,可以使用使用户@Cerbrus的下一个函数
function find_unique_characters( string ){
var unique='';
for(var i=0; i<string.length; i++){
if(string.lastIndexOf(string[i]) == string.indexOf(string[i])){
unique += string[i];
}
}
return unique;
}
console.log(find_unique_characters('baraban'));
如果只想返回在 字符串,检查它们的最后一次出现是否与 他们第一次出现。
您的代码至少返回一次字符串中的所有字符, 而不是只返回出现不超过一次的字符
链接到堆栈溢出线程 从字符串中删除重复字符
这里有一个快速的方法:
str = str.split('').filter(function(v,i,self){
return self.indexOf(v) == i;
}).join('');
function RemoveDuplicateLetters(input) {
var result = '', i = 0, char = '';
while (i < input.length) {
char = input.substring(i, i+1);
result += char;
input = input.replace(char,'');
}
return result;
}
我看不到拼接版本,所以这里有一个:
function uniqueChars(s) {
var s = s.split('');
var c, chars = {}, i = 0;
while ((c = s[i])) {
c in chars? s.splice(i, 1) : chars[c] = ++i;
}
return s.join('');
}
这假设只有字母字符,大写不等于小写。
function uniqueChars(string){
var i= 0, L= string.length, ustring= '', next;
while(i<L){
next= string.charAt(i++);
if(ustring.indexOf(next)== -1) ustring+= next;
}
return ustring.replace(/[^a-zA-Z]/g, '');
}
var s1= 'The quick red fox jumps over the lazy brown dog.';
uniqueChars(s1)
/* 返回值:(字符串(Thequickrdfoxjmpsvtlazybwng*/
这将返回任何唯一字符-
function uniqueArray(array){
return array.filter(function(itm, i, T){
return T.indexOf(itm)== i;
});
}
var s1= 'The quick red fox jumps over the lazy brown dog.';
uniqueArray(s1.split('')).join('');
/* 返回值:(字符串(The quickrdfoxjmpsvtlazybwng.*/
相关文章:
- 如果不刷新Rails中的浏览器,AJAX请求就无法看到效果
- 在页面刷新时,不会触发重要滚动航路点(如果不在页面顶部)
- 如果不兼容,则隐藏范围输入
- Jquery,onBlur-如果不为空,则显示警报
- 从params推送到对象(如果不存在)
- 如果不是来自引用域,则重定向
- Google 表格脚本 - “无法读取未定义的属性”(如果不是)
- 每次都必须按 CTRL+f5 才能点击 api.如果不按它,就会弹出跨源请求阻止错误
- 字体调整器(如果不是)
- 禁用输入 B&C,如果不是输入 A
- 如果不在第一个选项卡中,jQuery Accordion会缩小谷歌图表
- 正则表达式能否匹配字符串开头或结尾的字符(但不能同时匹配)
- JQuery 选择子元素(如果不是直接在父元素下,则不确定是否可选)
- javascript页面加载检查是否存在具有特定类的span(在<tr>下),如果不存在,则删除整个<
- Don'如果“不希望发送电子邮件”;Null”;单元格中的值
- Ramda过滤器如果不匹配
- Jquery或Javascript计算两个字段中的字符数,如果不等于20
- 检查第一个字符是否为int的错误,如果不是'不要删除那个字符
- Javascript:确定字符串中的所有字符是否都是唯一的,如果不是,则删除重复字符
- 检查最后一个字符是否为连字符(-),如果不是则添加它