Javascript 检查字符串中的字符是否都是唯一的
我试图通过使用一个数组来使用JS解决这个问题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)
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;z console.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;i log(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;
}