面试中遇到这样一道题,有一个字符串,"12345678abcABCDefghijk9874321YXWV321",现在定义同类型字符(数字为一类型,大写字母为一类型,小写字母为一类型)4个及4个以上为连续,需要找出连续(包括顺序连续和倒序连续)的个数,请问一下各位大神这个应该怎么解决呢?谢谢。
面试中遇到这样一道题,有一个字符串,"12345678abcABCDefghijk9874321YXWV321",现在定义同类型字符(数字为一类型,大写字母为一类型,小写字母为一类型)4个及4个以上为连续,需要找出连续(包括顺序连续和倒序连续)的个数,请问一下各位大神这个应该怎么解决呢?谢谢。
function trans (str) {
let before = ''
let len = 0
let order = null
let matched = []
for (let i = 0, length = str.length; i < length; i++) {
let cur = str[i]
if (len === 0) {
before = cur
len = 1
order = null
continue
}
let diff = cur.charCodeAt(0) - before.charCodeAt(0)
if (Math.abs(diff) === 1) {
order = order || diff
if (order === diff) {
len += 1
before = cur
continue
}
}
if (len >= 4) {
matched.push(str.slice(i - len, i))
}
before = cur
len = 1
order = null
}
if (len >= 4) {
matched.push(str.slice(str.length - len))
}
return {
count: matched.length,
matched
}
}
trans("12345678abcABCDefghijk9874321YXWV321").count
最近刚好在学正则,这个用正则匹配的话我觉得很合适
let str = "12345678abcABCDefghijk9874321YXWV321"
let aa = str.match(/d{4,}/g)
let bb = str.match(/[A-Z]{4,}/g)
let cc = str.match(/[a-z]{4,}/g)
返回分别匹配数字,大写,小写的数组
13 回答12.8k 阅读
7 回答1.9k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答873 阅读✓ 已解决
6 回答1k 阅读
2 回答1.3k 阅读✓ 已解决
连续的意思是上一个字符和下一个字符的ascii值相差1,并且连续出现4次和以上。这个貌似c语言作业...
java代码: