1694. 重新格式化电话号码
题意
给你一个字符串形式的电话号码 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" 。
题解
class Solution {
public String reformatNumber(String number) {
StringBuilder sb = new StringBuilder();
char[] chs = number.toCharArray();
for(char c:chs)
if(c!=' '&&c!='-') sb.append(c);
int len = sb.length();
int index=0;
StringBuilder sb1 = new StringBuilder();
if(len<3) sb1.append(sb);
else if(len==4) sb1.append(sb.substring(0,2)+"-"+sb.substring(2,4));
else {
sb1.append(sb.substring(index,index+3));
index+=3;
for(int i=index;i<len;){
sb1.append("-");
if(i+4==len){
sb1.append(sb.substring(i,i+2)+"-"+sb.substring(i+2,i+4));
i+=4;
}else if(i+2==len){
sb1.append(sb.substring(i,i+2));
i+=2;
}else{
sb1.append(sb.substring(i,i+3));
i+=3;
}
}
}
return sb1.toString();
}
}

相关推荐
最新2026黑龙江省村界村级行政区划矢量shp数据下载
最新2026黑龙江省村界村级行政区划矢量shp数据,几千个面,属性包含村、社区乡、街道镇、市多级属性,非常准确
政府科技管理者在推动科技成果转化过程中,如何精准匹配供需双方并提高对接效率?.docx
政府科技管理者在推动科技成果转化过程中,如何精准匹配供需双方并提高对接效率?
密码学基于大整数模运算的减法操作序列分析:4096位输入在固定模数下的逐步约简过程研究
内容概要:该文档记录了对一个大整数模运算(mod 4096)过程中连续减法操作的详细执行过程,主要围绕输入值与固定大数N之间的多次减法运算展开。文档展示了每轮减法前的临时值(temp)、当前N的十六进制表示以及两者的差值(diff),并标注了具体的减法编号、计算周期和输入位位置。整个过程共涉及上千次减法尝试,最终得到一个非负余数结果(FINAL),表明这是某种高精度模减算法(如Montgomery Reduction或类似逐位迭代方法)的实现追踪。文档的核心是展示大数模运算中逐步逼近余数的计算轨迹,强调二进制高位对齐下的条件
基于转子磁场定向的飞轮储能机侧PQ控制与网侧恒压双闭环协调策略研究(Simulink仿真实现)
内容概要:本文研究了基于转子磁场定向的飞轮储能系统在机侧与网侧的协调控制策略,重点实现了机侧PQ控制与网侧恒压双闭环控制的Simulink仿真实现。通过转子磁场定向技术,对飞轮储能系统的有功与无功功率进行精确解耦控制,有效提升了系统在并网运行时的稳定性与动态响应性能。网侧采用恒压双闭环控制策略,确保直流母线电压稳定,实现能量的高效双向流动。文中详细阐述了控制策略的设计原理、数学建模过程及仿真模型的构建方法,并通过仿真验证了该协调策略在功率平滑、电压支撑、动态调节及系统稳定性方面的有效性。; 适合人群:具备电力电子、电力系统或自动控制基础知识,从事新能源储能系统、飞轮储能技术、电力系统仿真等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 掌握飞轮储能系统在并网工况下的机侧PQ解耦控制原理;② 学习基于转子磁场定向的矢量控制方法在储能系统中的应用;③ 实现并优化机侧与网侧双闭环协调控制策略,提升系统动态性能与稳定性;④ 为后续开展混合储能系统、微电网能量管理及高比例可再生能源接入系统的控制研究提供技术基础与仿真参考。; 阅读建议:建议结合Simulink仿真模型逐步理解控制结构设计,重点关注坐标变换、PI控制器参数整定、双闭环耦合关系及仿真结果分析,可尝试修改控制参数或工况设置以深入掌握系统响应特性。
2026海南省行政区划矢量图层-省市县乡镇四级行政区划数据下载
2026最新海南省行政区划矢量图层数据,包含省、市、县、乡镇四级行政区划数据,wgs84坐标


