题目
给你一个字符串 s ,将该字符串中的大写字母转换成相同的小写字母,返回新的字符串。
示例 1:
输入:s = "Hello"
输出:"hello"
示例 2:
输入:s = "here"
输出:"here"
示例 3:
输入:s = "LOVELY"
输出:"lovely"
提示:
1 <= s.length <= 100
s 由 ASCII 字符集中的可打印字符组成
题解
解法一:利用Swift语言特性
时间复杂度:O(n)
空间复杂的:O(n)
代码:
func toLowerCase(_ s: String) -> String {
return s.lowercased()
}
提交结果:
解法二:将大小写字符写入字典,遍历查询替换
时间复杂度:O(n)
空间复杂的:O(n)
代码:
func toLowerCase(_ s: String) -> String {
var result: String = s
for item in s {
result = result.replacingOccurrences(of: String(item), with: lower(String(item)))
}
return s.lowercased()
}
private func lower(_ s: String) -> String {
let hash = ["A":"a", "B":"b", "C":"c", "D":"d", "E":"e", "F":"f",
"G":"g", "H":"h", "I":"i", "J":"j", "K":"k", "L":"l",
"M":"m", "N":"n", "O":"o", "P":"p", "Q":"q", "R":"r",
"S":"s", "T":"t", "U":"u", "V":"v", "W":"w", "X":"x",
"Y":"y", "Z":"z"]
if let s1 = hash[s] {
return s1
}
return ""
}
提交结果:
解法三:利用ASCII码
大写字母A-Z的ASCII码范围为[65,90]
小写字母A-Z的ASCII码范围为[97,122]
时间复杂度:O(n)
空间复杂的:O(1)
代码:
func toLowerCase(_ s: String) -> String {
var result: String = ""
for item in s.unicodeScalars {
if item.value >= 65, item.value <= 90 {
result += String(UnicodeScalar(item.value + 32)!)
}else {
result += String(UnicodeScalar(item.value)!)
}
}
return s.lowercased()
}