通江县建设局网站,栖霞网站建设,朔州网站建设,免费网站注册com文章目录1. 题目2. 解题1. 题目
给你一个字符串形式的电话号码 number 。 number 由数字、空格 、和破折号 - 组成。
请你按下述方式重新格式化电话号码。 首先#xff0c;删除 所有的空格和破折号。 其次#xff0c;将数组从左到右 每 3 个一组 分块#xff0c;直到 剩…
文章目录1. 题目2. 解题1. 题目
给你一个字符串形式的电话号码 number 。 number 由数字、空格 、和破折号 - 组成。
请你按下述方式重新格式化电话号码。 首先删除 所有的空格和破折号。 其次将数组从左到右 每 3 个一组 分块直到 剩下 4 个或更少数字。 剩下的数字将按下述规定再分块 2 个数字单个含 2 个数字的块。 3 个数字单个含 3 个数字的块。 4 个数字两个分别含 2 个数字的块。 最后用破折号将这些块连接起来。
注意重新格式化过程中 不应该 生成仅含 1 个数字的块并且 最多 生成两个含 2 个数字的块。
返回格式化后的电话号码。
示例 1
输入number 1-23-45 6
输出123-456
解释数字是 123456
步骤 1共有超过 4 个数字所以先取 3 个数字分为一组。第 1 个块是 123 。
步骤 2剩下 3 个数字将它们放入单个含 3 个数字的块。第 2 个块是 456 。
连接这些块后得到 123-456 。示例 2
输入number 123 4-567
输出123-45-67
解释数字是 1234567.
步骤 1共有超过 4 个数字所以先取 3 个数字分为一组。第 1 个块是 123 。
步骤 2剩下 4 个数字所以将它们分成两个含 2 个数字的块。这 2 块分别是 45 和 67 。
连接这些块后得到 123-45-67 。示例 3
输入number 123 4-5678
输出123-456-78
解释数字是 12345678 。
步骤 1第 1 个块 123 。
步骤 2第 2 个块 456 。
步骤 3剩下 2 个数字将它们放入单个含 2 个数字的块。第 3 个块是 78 。
连接这些块后得到 123-456-78 。示例 4
输入number 12
输出12示例 5
输入number --17-5 229 35-39475
输出175-229-353-94-75提示
2 number.length 100
number 由数字和字符 - 及 组成。
number 中至少含 2 个数字。来源力扣LeetCode 链接https://leetcode-cn.com/problems/reformat-phone-number 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。 2. 解题
按题意模拟数字数量对3取模余1时才需要调整尾部为2个一组
class Solution {
public:string reformatNumber(string number) {string t, ans;for(auto c : number)if(c! c!-)t c;int n 0;for(int i 0; i t.size(); i){if(n 3){ans -;n 0;}ans t[i];n;}if(t.size()%3 1){string tail3 - t.substr(t.size()-2);return ans.substr(0,ans.size()-3)tail3;}return ans;}
};0 ms 6.6 MB C 我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号Michael阿明一起加油、一起学习进步