题目
实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串。
示例 1:
输入: “Hello”
输出: “hello”
示例 2:
输入: “here”
输出: “here”
示例 3:
输入: “LOVELY”
输出: “lovely”
做法一:对象+数组更换
var toLowerCase = function(str) {
let newStr = ''
let lowercaseObj = {
A: 0,
B: 1,
C: 2,
D: 3,
E: 4,
F: 5,
G: 6,
H: 7,
I: 8,
J: 9,
K: 10,
L: 11,
M: 12,
N: 13,
O: 14,
P: 15,
Q: 16,
R: 17,
S: 18,
T: 19,
U: 20,
V: 21,
W: 22,
X: 23,
Y: 24,
Z: 25
}
let lowerArr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
for (let i = 0; i < str.length; i++) {
let result = hasProperty(lowercaseObj, str[i])
newStr += result.status ? lowerArr[result.index] : str[i]
}
return newStr
}
function hasProperty (obj, key) {
if (obj[key] !== undefined) {
return {
status: true,
index: obj[key]
}
} else {
return {
status: false
}
}
}
性能测试
执行用时 : 84 ms, 在To Lower Case的JavaScript提交中击败了95.64% 的用户
内存消耗 : 33.5 MB, 在To Lower Case的JavaScript提交中击败了76.63% 的用户
做法二:ASCII码转换
var toLowerCase = function(str) {
let newStr = ''
for (let i = 0; i < str.length; i++) {
let asciistr = str[i].charCodeAt(0)
if (asciistr >= 65 && asciistr <= 90) {
newStr += String.fromCharCode(asciistr + 32)
} else {
newStr += str[i]
}
}
return newStr
}
性能测试
执行用时 : 72 ms, 在To Lower Case的JavaScript提交中击败了98.80% 的用户
内存消耗 : 33.7 MB, 在To Lower Case的JavaScript提交中击败了42.66% 的用户