Leetcode0824. 山羊拉丁文(simple,字符串处理)
处理 字符串 Simple
2023-09-14 09:01:30 时间
目录
1. 问题描述
给你一个由若干单词组成的句子 sentence
,单词间由空格分隔。每个单词仅由大写和小写英文字母组成。请你将句子转换为 “山羊拉丁文(Goat Latin)”(一种类似于 猪拉丁文 - Pig Latin 的虚构语言)。山羊拉丁文的规则如下:
- 如果单词以元音开头(
'a'
,'e'
,'i'
,'o'
,'u'
),在单词后添加"ma"
。- 例如,单词
"apple"
变为"applema"
。
- 例如,单词
- 如果单词以辅音字母开头(即,非元音字母),移除第一个字符并将它放到末尾,之后再添加
"ma"
。- 例如,单词
"goat"
变为"oatgma"
。
- 例如,单词
- 根据单词在句子中的索引,在单词最后添加与索引相同数量的字母
'a'
,索引从1
开始。- 例如,在第一个单词后添加
"a"
,在第二个单词后添加"aa"
,以此类推。
- 例如,在第一个单词后添加
返回将 sentence
转换为山羊拉丁文后的句子。
示例 1:
输入:sentence = "I speak Goat Latin" 输出:"Imaa peaksmaaa oatGmaaaa atinLmaaaaa"
示例 2:
输入:sentence = "The quick brown fox jumped over the lazy dog" 输出:"heTmaa uickqmaaa rownbmaaaa oxfmaaaaa umpedjmaaaaaa overmaaaaaaa hetmaaaaaaaa azylmaaaaaaaaa ogdmaaaaaaaaaa"
提示:
1 <= sentence.length <= 150
sentence
由英文字母和空格组成sentence
不含前导或尾随空格sentence
中的所有单词由单个空格分隔
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/goat-latin
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题分析
傻傻地遍历就是了。
对每个单词进行首字母判断,然后相应地进行字符串修改操作(可能的操作包括删除首位字符、末尾添加“m”或者“ma”、末尾添加若干个“a”)生成新的字符串。
当然,首先需要从sentence中提取出各个单词。单词间的空格一般情况下是一个,但是本题解放宽一些限制,单词间允许多个空格的出现,采用基于一个简易状态机的机制来实现。该状态机状态转移图如下所示:
以下代码虽然并没有显式地实现这个状态机,但是表达的意思的是相同的。
3. 代码实现
class Solution:
def toGoatLatin(self, sentence: str) -> str:
flag = False
wordCnt = 0
new_sentence = ''
sentence = sentence + ' ' # for the convenience of the handle of the last word
for k in range(len(sentence)):
if sentence[k] != " " and not flag:
flag = True
start = k
elif flag and sentence[k]==" ":
# New word found
word = sentence[start:k]
wordCnt += 1
flag = False
if word[0].lower() in ['a', 'e', 'i', 'o', 'u']:
new_sentence = new_sentence + word + 'ma' + wordCnt * 'a' + ' '
else:
new_sentence = new_sentence + word[1:] + word[0] + 'ma' + wordCnt * 'a'+ ' '
return new_sentence[:-1] # Remove the last space
执行用时:32 ms, 在所有 Python3 提交中击败了90.13%的用户
内存消耗:15.2 MB, 在所有 Python3 提交中击败了5.33%的用户
相关文章
- Python 编程骚操作连载(一)- 字符串、列表、字典和集合的处理(Part B)
- Python--字符串、函数、异常处理、面向对象
- Javascript字符串处理
- ORA-01670: new datafile string needed for standby database recovery ORACLE 报错 故障修复 远程处理
- ORA-29360: resource plan string contains multiple directives for subplan string ORACLE 报错 故障修复 远程处理
- ORA-32030: an SPFILE is already associated with the instance ORACLE 报错 故障修复 远程处理
- ORA-53032: The default preference document cannot be found. ORACLE 报错 故障修复 远程处理
- postgresql 数据库 查询集合结果如何用逗号分隔返回字符串处理的操作
- ORA-02464: Cluster definition can not be both HASH and INDEX ORACLE 报错 故障修复 远程处理
- MySQL Error number: MY-011944; Symbol: ER_IB_MSG_119; SQLSTATE: HY000 报错 故障修复 远程处理
- ORA-09284: sllfop: cannot allocate read buffer ORACLE 报错 故障修复 远程处理
- MySQL Error number: MY-012619; Symbol: ER_IB_MSG_794; SQLSTATE: HY000 报错 故障修复 远程处理
- Python 处理各种编码的字符串详解编程语言
- Java Exception处理之最佳实践详解编程语言
- 函数使用Oracle中的TRIM函数简化字符串处理(oracle中trim)
- abap处理字符串详解编程语言
- Go语言字符串的链式处理——操作与数据分离的设计技巧
- 氧化石墨烯膜水处理研究获进展
- 处理Linux下字符串处理技巧(linux任意字符串)
- 处理Java解决Redis过期缓存问题(redisjava过期)
- 如何在Oracle中处理日期字符串?(oracle日期字符串)
- MySQL转义函数:处理字符串安全性更强(mysql 转义函数)
- 处理Oracle数据库中处理错误的技巧(oracle中错误)
- Oracle 处理字符串的转换过程(oracle中转字符串)
- Oracle位数补足实现字符串精准处理(oracle位数补足)
- 学习php笔记字符串处理