解题思路
-
基本思路:
- 根据身份证号长度进行分组
- 按照 的格式添加空格
- 处理不同长度的输入情况
-
实现方法:
- 遍历字符串
- 在第 位和第 位后添加空格
- 处理长度不足的情况
代码
#include <iostream>
#include <string>
using namespace std;
class Solution {
public:
string formatIdCard(string input) {
string result = input;
// 添加第一个空格(第6位后)
if (input.length() > 6) {
result.insert(6, " ");
}
// 添加第二个空格(第14位后,考虑已插入的空格)
if (input.length() > 14) {
result.insert(15, " ");
}
return result;
}
};
int main() {
string input;
Solution solution;
while (getline(cin, input)) {
cout << solution.formatIdCard(input) << endl;
}
return 0;
}
import java.util.*;
public class Main {
public static String formatIdCard(String input) {
StringBuilder result = new StringBuilder(input);
// 添加第一个空格(第6位后)
if (input.length() > 6) {
result.insert(6, " ");
}
// 添加第二个空格(第14位后,考虑已插入的空格)
if (input.length() > 14) {
result.insert(15, " ");
}
return result.toString();
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNextLine()) {
String input = sc.nextLine();
System.out.println(formatIdCard(input));
}
}
}
class Solution:
def formatIdCard(self, input_str):
result = list(input_str)
# 添加第一个空格(第6位后)
if len(input_str) > 6:
result.insert(6, " ")
# 添加第二个空格(第14位后,考虑已插入的空格)
if len(input_str) > 14:
result.insert(15, " ")
return "".join(result)
if __name__ == "__main__":
solution = Solution()
try:
while True:
input_str = input().strip()
print(solution.formatIdCard(input_str))
except:
pass
算法及复杂度
- 算法:字符串处理
- 时间复杂度:,其中 为字符串长度
- 空间复杂度:,用于存储结果字符串