307.重新格式化电话号码
1694. 重新格式化电话号码 - 力扣(LeetCode)
class Solution {public String reformatNumber(String number) {StringBuffer sb=new StringBuffer();int count=0;for(int i=0;i<number.length();i++){if(Character.isDigit(number.charAt(i))){sb.append(number.charAt(i));count++;}if(count==3){sb.append('-');count=0;}}int le=sb.length();if(le%4==0){sb.delete(le-1,le);}else if(le%4==1){sb.delete(le-2,le-1);sb.insert(le-3,'-');}return sb.toString();}
}
class Solution:def reformatNumber(self, number):# 使用列表来高效地构建字符串sb = []count = 0 # 用于跟踪当前数字的数量# 遍历输入字符串中的每个字符for i in range(len(number)):if number[i].isdigit():sb.append(number[i]) # 如果是数字,添加到列表中count += 1if count == 3: # 每三个数字后添加一个连字符sb.append('-')count = 0 # 重置计数器le = len(sb) # 获取列表的长度# 根据列表的长度调整格式if le % 4 == 0:# 如果长度是4的倍数,删除最后一个连字符del sb[-1]elif le % 4 == 1:# 如果长度模4余1,调整格式del sb[-2] # 删除倒数第二个字符sb.insert(le - 3, '-') # 在合适的位置插入连字符# 将列表转换为字符串并返回return ''.join(sb)