分享

Python|重新格式化电话号码

 算法与编程之美 2021-01-19

引言:

力扣(LeetCode),未来不止于此!

问题描述

示例:

给你一个字符串形式的电话号码 number number 由数字、空格 ' '、和破折号 '-' 组成。

请你按下述方式重新格式化电话号码。

首先,删除所有的空格和破折号。

其次,将数组从左到右每 3个一组分块,直到剩下4个或更少数字。剩下的数字将按下述规定再分块:

2个数字:单个含 2个数字的块。

3个数字:单个含 3个数字的块。

4个数字:两个分别含 2个数字的块。

最后用破折号将这些块连接起来。注意,重新格式化过程中不应该生成仅含 1个数字的块,并且最多生成两个含 2个数字的块。

返回格式化后的电话号码。

示例1

输入:number= "1-23-45  6"

输出:" 123-456"

示例2

输入:number= "123  4-567"

输出:"123-45-67 "

示例3:

输入:number= "1-2"

输出:"12"

解决方案

抓问题关键(1number为字符串(2)删除number的空格和破折号(3)把数字进行分组,每组3个数字(4)每组之间用破折号连接(5)寻找特殊情况。

首先,因为number为字符串,所有删除过程可以直接用replace(替换)进行删除得到一串完整的number,其次既然是分组,便可以用for循环遍历下标,寻找规律用切片进行截取分组,并且用破折号直接进行连接,最后寻找特殊情况,进行解决。

number =input('字符串形式的电话号码:')

number = number.replace(" ","").replace("-","")#进行删除处理

ans = ""

for x in range(0,len(number),3):

     if x == len(number) - 4: #考虑最后出现剩余4个数字的情况

         s += number[x:x+2] + "-" + number[x+2:]

         break

     else:

         s += number[x:x+3] + "-" #进行分组处理

if s[-1] == "-" :

     print(s[:-1]) #解决最后末尾出现的"-"

else:

     print(s)

运行实例:


结语

本题为220场力扣周赛第一题,题目难度easy,本题考查主要针对字符串和切片的运用,最主要的发散思维,如何去解决每3个数字为数组和特殊情况的处理。通过力扣周赛能有效提高学习者的编程思维和编程基本语法格式问题,如果有想提高自己编程能力的朋友可以去试一试每周的力扣周赛,同时如有错误,欢迎读者进行评论。

主编:欧洋

稿件来源:深度学习与文旅应用实验室(DLETA)

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多