LeetCode每日一题(2020.10.17)
最难做的事,就是把容易做的事持之以恒。
今日题目:
难度:简单
实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串。
示例 1:
输入: "Hello"
输出: "hello"
示例 2:
输入: "here"
输出: "here"
通过次数55,081,提交次数72,621
看到这个题目的时候,最先想到的是直接用Python的内置函数upper(),来实现,当然这是最简单的方法。
解法一:
class Solution:
def toLowerCase(self, str: str) -> str:
return str.lower()
下面来看下执行时间和内存消耗:
当然这个方法显然不符合题目的要求,题目要去自己写程序实现这个功能。
所以我们可以采用ASSIC码转化的方式实现该功能。A-Z的ASSIC码为65-90,a-z的ASSIC码为87-122,二者相差了32,故我们只需要取出字符串的每一个字符,然后一次判断是否其位于65-90之间,如果满足的话,就将其ASSIC码加32,然后再将ASSIC码转化为对应的字符即可。
这里,我们需要用到两个函数,一个是ord(),这个函数可以获得字符的ASSIC码,还有一个是chr(),这个函数可以将ASSIC码转化为对应的字符。
解法二:
class Solution:
def toLowerCase(self, str: str) -> str:
s = []
for i in str:
if 65 <= ord(i) <= 90:
s.append(chr(ord(i) + 32))
else:
s.append(i)
return ''.join(s)
下面来看下执行时间和内存消耗:
还有一种用字典的方式,先建立好大小写字母的对应关系,然后取出字符串的每一个字符,然后比较该字符是否在字典的键中,如果在的话,就在元组s的尾部插入该键的值,否则的话,直接插入原来的字符。简单的来说,就是如果该字母是大写,就用小写字母代替它,否则就不需要代替。最后用join()方法,将元组中的元素连接起来。
下面,介绍一些上面提到的get()方法得语法:
dict.get(key, default=None) key -- 字典中要查找的键。 default -- 如果指定键的值不存在时,返回该默认值。
class Solution:
def toLowerCase(self, str: str) -> str:
dic = {'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'}
s = []
for i in str:
if dic.get(i):
s.append(dic[i])
else:
s.append(i)
return ''.join(s)
下面来看下执行时间和内存消耗:
可以看出,采用字典的方法,虽然会牺牲一些内存消耗,但是,执行时间会有相当的缩减,由此可见对于即时要求性较高的程序,采用字典的方式不失为一种良策。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/to-lower-case
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。