Codewar刷题总结
目的: 在Codewar的刷题过程中,发现:
- 思维过于古板和定式
- 刷过题目的重点细节会随着时间遗忘
为了解决上述问题,同时学习markdown的使用,便于今后的学习总结,特此尝试以下。
正文
题目1:Find the capitals
Instructions
Write a function that takes a single string (word) as argument. The function must return an ordered list containing the indexes of all capital letters in the string.
Example
Test.assertSimilar( capitals('CodEWaRs'), [0,3,4,6] );
Solutions
my solution:
def capitals(word):
#your code here
lst = []
lst_num = []
index = 0
for val in word:
lst.append(val)
lst_word = ''.join(lst)
for val in lst_word:
if val.isupper():
lst_num.append(index)
index = index + 1
return lst_num
思路:先对字符串转为列表,利用index索引值记录大写字母所在位置
Better Solutions:
def capitals(word):
return [i for (i, c) in enumerate(word) if c.isupper()]
def capitals(word):
uppers = []
for i in range(len(word)):
if word[i].isupper():
uppers.append(i)
return uppers
总结: 上述两种解法,有两点需要记住:
1.enumerate()
函数使用
2.for i in range(len(word)):
在CS224N课程中,求共现矩阵时,也用到了这种方法。不要只会对元素进行循环遍历,可尝试,获取整个列表或者字符串的长度,再利用下标对元素进行访问。
题目2:Find the capitals
Instructions
Jaden Smith, the son of Will Smith, is the star of films such as The Karate Kid (2010) and After Earth (2013). Jaden is also known for some of his philosophy that he delivers via Twitter. When writing on Twitter, he is known for almost always capitalizing every word.
Your task is to convert strings to how they would be written by Jaden Smith. The strings are actual quotes from Jaden Smith, but they are not capitalized in the same way he originally typed them.
Example
Not Jaden-Cased: "How can mirrors be real if our eyes aren't real"
Jaden-Cased: "How Can Mirrors Be Real If Our Eyes Aren't Real"
Solutions
my solution:
def toJadenCase(string):
lst = []
for val in string.split(' '):
lst.append(val.capitalize())
string = ' '.join(lst)
return string
总结:先将字符串内每个单词读出(split方法按空格切分)
将列表转换为字符串方法:
string = ' '.join(lst)
better solutions:
import string
def toJadenCase(NonJadenStrings):
return string.capwords(NonJadenStrings)