题目名称:收件邮箱
题目描述: 已知字符串str,str表示邮箱的不标准格式。 其中”.”会被记录成”dot”,”@”记录成”at”。 写一个程序将str转化成可用的邮箱格式。(可用格式中字符串中除了开头结尾所有”dot”,都会被转换,”at”只会被转化一次,开头结尾的不转化)
输入描述:输入字符串str.(1<=strlen(str)<=1000)
输出描述: 输出转化后的格式。
示例1
输入: mxyatoxcoderdotcom
输出: mxy@oxcoder.com
class Solution:
def __init__(self) -> None:
pass
def solution(self, str):
result = None
# TODO: 请在此编写代码
return result
if __name__ == "__main__":
str = input().strip()
sol = Solution()
result = sol.solution(str)
print(result)
解题思路:
根据要求,我认为at是除了头尾不计算,然后中间只转换一次,但是报错了。我也不知道是我理解错误还是问题逻辑错误。。。。我的答案如下
def solution(self, str):
result = None
# TODO: 请在此编写代码
if len(str)<4:
return str
str=str.replace('dot','.')
if str[0]=='.':
str='dot'+str[1:]
if str[-1]=='.':
str=str[:-1]+'dot'
index=str.find('at',2)
if index != len(str)-2 and index!=-1:
result=str[:index]+'@'+str[index+2:]
else:
result=str
return result
但是测试不通过,通过的答案如下:
def solution(self, str):
result = None
# TODO: 请在此编写代码
result=str.replace('dot','.').replace('at','@',1)
if result[0]=='.':
result='dot'+result[1:]
if result[-1]=='.':
result=result[:-1]+'dot'
if result[0]=='@':
result='at'+result[1:]
if result[-1]=='@':
result=result[:-1]+'at'
return result