Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查字符串中的字符是否都是唯一的_Javascript - Fatal编程技术网

Javascript 检查字符串中的字符是否都是唯一的

Javascript 检查字符串中的字符是否都是唯一的,javascript,Javascript,我试图通过使用一个数组来使用JS解决这个问题 var str = 'abcdefgh'; for (i = 0; i < 255; i++) { arr[i] = false; } function check() { for (i = 0; i < str.length; i++) { if (arr[str.charCodeAt(i)] == true) { return false; } arr[str.charCodeAt(i)

我试图通过使用一个数组来使用JS解决这个问题

var str = 'abcdefgh';

for (i = 0; i < 255; i++) {
  arr[i] = false;
}

function check() {
  for (i = 0; i < str.length; i++) {
    if (arr[str.charCodeAt(i)] == true) {
      return false;
    }
    arr[str.charCodeAt(i)] = true;
  }
  return true;
}
var str='abcdefgh';
对于(i=0;i<255;i++){
arr[i]=假;
}
函数检查(){
对于(i=0;i
我正在初始化一个固定大小为256的数组,使其具有布尔值
false
。 然后,对于字符串中的字符,我将相应ASCII索引的值设置为true。如果我再次找到相同的字符,我将返回
false

运行程序时,即使字符串没有任何重复字符,也会返回false。

为每个字符使用.match()函数。使用“长度”计算引用。我猜就是这样

(str.match(/yourChar/g) || []).length

使用对象以获得更快的结果

函数是唯一的(str){
var obj={};
对于(变量z=0;zconsole.log(是唯一的(“aa”);//false
您使用的是
arr[str.charCodeAt(i)]
这是错误的。 它应该是
arr[str[i].charCodeAt(0)]

var arr=[];
var str=“abcdefgh”;

对于(i=0;i用所有字符填充
集合
,并将其大小与字符串长度进行比较:

函数是唯一的(str){
返回新集合(str).size==str.length;
}
console.log(isUnique('abc');//true
log(isUnique('abcabc');//false
时间复杂度=O(n) 空间复杂度=O(n)

const isUnique=(str)=>{
让charCount={};
for(设i=0;i{
返回新集合(str).size==str.length;
}
解决方案3: 将字符串转换为chars数组,对其进行排序,然后循环检查相邻元素,如果存在匹配项,则返回false,否则返回true

解决方案4: 它与解决方案1类似,只是我们使用了一个集合数据结构,这是在最新版本的javascript中引入的
//不需要额外的数据结构。我们可以使用naive解决方案
//时间复杂度:O(n^2)
函数是唯一的(str){
for(设i=0;ilog(isuniquesecondmethodos('hello');
将对象用作映射器

函数uniqueCharacterString(inputString){
常量characterMap={};
让areCharactersUnique=true;
inputString.trim().split(“”).map((ch)=>{
if(字符映射[ch]==未定义){
characterMap[ch]=1;
}否则{
areCharactersUnique=false;
}
})
返回的字符是唯一的;
}
算法

*1.步骤-第一个字符串是->堆栈*

*2.步进串转换为字符*

3.步骤-在数组['s','t','a','c','k'中使用迭代

4.步骤-if(beginElement!==nextElement){return true}else{return false}

执行代码

function uniqueChars(string){
var charArray = Array.from(string) //convert charArray
  for(var i=0;i<charArray.length;i++){
    if(charArray[i] !== charArray[i+1]){ 
      return true
    }
    else{
      return false
    }
  }

}
var string ="stack"
console.log(uniqueChars(string))
函数唯一字符(字符串){
var charArray=Array.from(string)//convert charArray
对于(var i=0;i我们也可以尝试使用和方法:

函数stringIsUnique(输入){
对于(i=0;i
算法

  • 字母表的计数频率。例如,
    'Mozilla'
    将返回
    对象{M:1,o:1,z:1,i:1,l:2,a:1}
    。请注意,
    -~undefined
    上的按位NOT运算符是
    1
    -/code>-1
    2
    -2
    3
  • 当所有事件只出现一次时,返回
    true
  • 执行代码

    function uniqueChars(string){
    var charArray = Array.from(string) //convert charArray
      for(var i=0;i<charArray.length;i++){
        if(charArray[i] !== charArray[i+1]){ 
          return true
        }
        else{
          return false
        }
      }
    
    }
    var string ="stack"
    console.log(uniqueChars(string))
    
    var isUnique=(str)=>{
    常量哈希={};
    for(str的常量键){
    哈希[键]=-~哈希[键];
    }
    返回Object.values(散列).every((t)=>t==1);
    };
    log(isUnique('Mozilla');
    
    console.log(isUnique('Firefox');
    您的代码似乎是正确的,您可以发布它无法工作的测试用例吗?您必须首先清理
    yourChar
    。因为它可能包含特殊的正则字符。。顺便说一句,它缺少
    )开头
    function uniqueChars(string){
    var charArray = Array.from(string) //convert charArray
      for(var i=0;i<charArray.length;i++){
        if(charArray[i] !== charArray[i+1]){ 
          return true
        }
        else{
          return false
        }
      }
    
    }
    var string ="stack"
    console.log(uniqueChars(string))
    
    function stringIsUnique(input) {
      for (i = 0; i < input.length; i++) {
        if (input.indexOf(input[i]) !== input.lastIndexOf(input[i])) {
          return false;
        }
      }
      return true;
    }