一、替换空格(牛客网)
请实现一个函数,将一个字符串中的每个空格替换成“%20”。
例1:We Are Happy 替换后 We%20Are%20Happy
例2:hello world 替换后 hello%20%20world
// 方法一:replaceAll
function replaceSpace (str) {
return str.replaceAll(" ", "%20");
}
// 方法二:split、join
function replaceSpace (str) {
return str.split(" ").join("%20");
}
// 方法三:用新的数组存
function replaceSpace (str) {
let result = [];
for (let i = 0; i < str.length; i++) {
if (str[i] === " ") {
result.push("%20")
} else {
result.push(str[i])
}
}
return result.join("").toString()
}
split()
,将字符串分割成数组。join(separator)
,把数组中的所有元素放入一个字符串,通过指定分隔符分隔。
二、斐波那契数列(牛客网)
斐波那契数列是指1、1、2、3、5、8、13、21、34、…,现在要求输入一个整数 n,请你输出斐波那契数列的第 n 项(从 0 开始,第 0 项为 0)。
n<=39
// 方法一:递归,复杂度较高,运行时间超过 2 秒了
function Fibonacci (n) {
if (n < 2) {
return n;
} else {
return Fibonacci(n-1) + Fibonacci(n-2);
}
}
// 方法二:使用中间变量
function Fibonacci (n) {
if (n < 2) {
return n;
}
let a = 0, b = 1;
for (let i = 2; i < n; ++i) {
let c = a + b;
a = b;
b = c;
}
return a + b;
}
三、字符串压缩(力扣)
比如,字符串aabcccccaaa
会变为a2b1c5a3
。若压缩后的字符串没有变短,则返回原先的字符串。假设字符串中只包含大小写英文字母。
例1:输入 aabcccccaaa 压缩后输出 a2b1c5a3
例2:输入 abbccd 压缩后输出 abbccd,因为 a1b2c2d1 比原字符串长度更长。
function compressString (str) {
let res = [];
let count = 1;
for (let i = 0; i < str.length; i++) {
if (str[i] === str[i + 1]) {
count++;
} else {
res.push(str[i]);
res.push(count);
count = 1;
}
}
return res.join("").length >= str.length ? str : res.join("");
}