每日算法
今日是:
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))