每日算法1:驼峰转换,判断连续字符

  • Post category:JavaScript

每日算法

今日是:

1、将字符串转换为驼峰格式

2、判断字符串中是否有连续重复的字符

将字符串转换成驼峰格式

// css 中经常有类似 background-image 这种通过 – 连接的字符,通过 javascript 设置样式的时候需要将这种样式转换成 backgroundImage 驼峰格式,请完成此转换功能:

// 以 – 为分隔符,将第二个起的非空单词首字母转为大写
// -webkit-border-image 转换后的结果为 webkitBorderImage
// “font-size”
// “fontSize”

/*题目分析:
1.明确驼峰格式是第二个字符串开始的字符串首字母大写,第一个字符串首字母小写
2.思路:首先通过-,可以判断字符串首字母的位置
3.一般情况:第一个要求是去掉-后,第一个字符串不变,第二个字符串的首字母大写
特殊情况:-在开头,第一个字符串在-后面,
4.解决思路:先按照一般情况处理,最后取出字符串的首字母转换为小写,符合题意
*/

点击查看代码

function cssStyle(str){
    var arr = str.split('')
    while(arr.indexOf('-')!==-1){
        //从头开始检索,返回-的索引位置
        const index =arr.indexOf('-');
        // 删除从index位置开始的一个元素
        arr.splice(index,1);
        // -后面的第一个字母迁移到-的位置,转换为大写
        arr[index] = arr[index].toUpperCase()
    }
    arr[0] = arr[0].toLowerCase();
    return arr.join('');   
}
var str = '-font-size';
console.log(cssStyle(str))

字符串中连续重复的字符

// 给定字符串 str,检查其是否包含连续重复的字母(a-zA-Z),包含返回 true,否则返回 false

// 示例1
// 输入
// ‘rattler’
// 输出
// true

// 思路:注意连续重复,是指相连的两个字符相同,若有这种字符则能输出布尔值,要考虑是采用判断输出,还是采用方法。
// 这里两种方法采用test判断str中是否有符合正则式的内容,find是判断字符串切割形成的数组中是否有符合函数的元素
// 易错:没有考虑到连续情况

点击查看代码
// 方法1:
function containsRepeatingLetter(str) {
    return /([a-zA-Z])\1/.test(str);
}
// 方法2:
function aa(str){
    let arr = str.split('')
    let item = arr.find((item,index) => arr[index] == arr[index+1])
    return item ? true : false
}

var str =  'ralerr'
console.log(containsRepeatingLetter(str))
console.log(aa(str))