我有两个字符串:
var a = 'ABCD';
var b = 'DEFG';
我需要比较这些变量以检查两个字符串中是否没有共同字符。
因此,对于这种情况,返回 false
(或做某事...),因为 D
是其中的一个常见字符。
您可以合并两个字符串,然后对其进行排序,然后循环循环,如果找到匹配项,则可以退出循环。
我在其他堆栈溢出对话中找到了这个建议:
var str="paraven4sr";
var hasDuplicates = (/([a-zA-Z]).*?1/).test(str)
因此,如果将字符串合并在一起,则可以执行上述用以使用REGEXP,而不是循环。
谢谢你们。我尝试了您的解决方案,最后得到了:
- 将我的两个字符串合并为一个
- 降低案例,
- 排序,
- 并加入
- 如果最终的串联字符串包含任何重复,
-
返回0如果不重复或重复计数。
var a; var b; var concatStr=a+b; checkReptCharc=checkRepeatChrcInString(concatStr); function checkRepeatChrcInString(str){ console.log('Concatenated String rec:' + str); try{ return str.toLowerCase().split("").sort().join("").match(/(.)1+/g).length; } catch(e){ return 0; } }
我也在寻找解决此问题的解决方案,但提出了:
a.split('').filter(a_ => b.includes(a_)).length === 0
将a
分为字符数组,然后使用过滤器检查a
中的每个字符是否发生在b
中。这将返回所有匹配字母的新数组。如果长度为零,则没有匹配的字符。
将toUpperCase()
添加到A&b必要时
,因此,如果使用.split('')在单独的字符串数组中仅重复字符串最短的长度,如果相同的长度仅使用第一个长度,然后按字符进行搜索以查看它是否在另一个字符串中。
这显然对原始海报重要为时已晚,但是任何发现此答案的人都可能觉得这很有用。
var a = 'ABCD';
var b = 'DEFG';
function doesNotHaveCommonLetter(string1, string2) {
// split string2 into an array
let arr2 = string2.split("");
// Split string1 into an array and loop through it for each letter.
// .every loops through an array and if any of the callbacks return a falsy value,
// the whole statement will end early and return false too.
return string1.split("").every((letter) => {
// If the second array contains the current letter, return false
if (arr2.includes(letter)) return false;
else {
// If we don't return true, the function will return undefined, which is falsy
return true;
}
})
}
doesNotHaveCommonLetter(a,b) // Returns false
doesNotHaveCommonLetter("abc", "xyz") // Returns true
const _str1 = 'ABCD';
const _str2 = 'DEFG';
function sameLetters(str1, str2) {
if(str1.length !== str2.length) return false;
const obj1 = {}
const obj2 = {}
for(const letter of str1) {
obj1[letter] = (obj1[letter] || 1) + 1
}
for(const letter of str2) {
obj2[letter] = (obj2[letter] || 1) + 1
}
for(const key in obj1) {
if(!obj2.hasOwnProperty(key)) return false
if(obj1[key] !== obj2[key]) return false
}
return true
}
sameLetters(_str1, _str2)