python_day_6:20180721

28. 实现strStr()
实现 strStr() 函数。
给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。

思路:判断needle是否在haystack里面,如果是的话,用find方法返回位置

class Solution:
def strStr(self, haystack, needle):
if needle in haystack:
return haystack.find(needle)
else:
return -1

520. 检测大写字母
给定一个单词,你需要判断单词的大写使用是否正确。
我们定义,在以下情况时,单词的大写用法是正确的:
1. 全部字母都是大写,比如"USA"。
2. 单词中所有字母都不是大写,比如"leetcode"。
3. 如果单词不只含有一个字母,只有首字母大写, 比如 "Google"。
否则,我们定义这个单词没有正确使用大写字母。

思路:三种判断条件都说清楚了,正好对应upper(),lower(),和title()三种情况

class Solution:
def detectCapitalUse(self, word):
if word==word.upper() or word==word.lower() or word==word.title():
return True
else:return False

824. 山羊拉丁文
给定一个由空格分割单词的句子 S。每个单词只包含大写或小写字母。
我们要将句子转换为 “Goat Latin”(一种类似于 猪拉丁文 - Pig Latin 的虚构语言)。
山羊拉丁文的规则如下:
* 如果单词以元音开头(a, e, i, o, u),在单词后添加"ma"。
例如,单词"apple"变为"applema"。
 
* 如果单词以辅音字母开头(即非元音字母),移除第一个字符并将它放到末尾,之后再添加"ma"。
例如,单词"goat"变为"oatgma"。
 
* 根据单词在句子中的索引,在单词最后添加与索引相同数量的字母'a',索引从1开始。
例如,在第一个单词后添加"a",在第二个单词后添加"aa",以此类推。
返回将 S 转换为山羊拉丁文后的句子。
思路:按照规则执行即可,看起来长,但其实不难,本题其实简化了,还应该考虑如果首字母辅音大写,经过goat变换后,第二位字母应该变成大写置顶,而原来的首字母应该变成小写放在后面。还要进一步考虑这个词的长度,如果只有一个字母组成,那又不存在第二个字母了,比较麻烦。好在题目不要求做这么细。

class Solution:
def toGoatLatin(self, S):
split=S.split(' ')
result=''
for i in range(len(split)):
result+=(self.goat(split[i])+'a'*(i+1)+' ')
return result[:-1]
def goat(self,word):
if word.lower()[0] in ['a','e','i','o','u']:
return word+'ma'
else:
return word[1:]+word[0]+'ma'

posted @ 2018-07-21 22:46  code_in_py  阅读(159)  评论(0编辑  收藏  举报