VIRTUALS

the virtual labs for the virtuals

0%

HJ4. 字符串分隔

摘要:
简单字符串分割题目。

题目

描述

  • 连续输入字符串,请按长度为 $8$ 拆分每个字符串后输出到新的字符串数组;
  • 长度不是 $8$ 整数倍的字符串请在后面补数字 $0$,空字符串不处理。

输入描述:
连续输入字符串(输入多次,每个字符串长度小于 $100$)

输出描述:
输出到长度为 $8$ 的新字符串数组

示例1

输入:
abc
123456789

输出:
abc00000
12345678
90000000

模拟

主要考察截取子串的方法,在C++的STL和Java的JDK中,字符串截取子串均有相应实现。
详情请见:算法竞赛常用STL和其他c++知识点总结

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/*
* author: etoa
* 2021-08-14 21:19:39
*/
#include <bits/stdc++.h>

using namespace std;

int main()
{
cin.tie(nullptr)->sync_with_stdio(false);
string s;
for (; getline(cin, s);) {
for (int i = 0, n = s.size(); i < n; i = i + 8) {
string each = "";
if (i + 8 < n) {
each = s.substr(i, 8);
} else {
each = s.substr(i);
for (int k = 8 - each.size(); k--; each += '0');
}
cout << each << endl;
}
}
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/* 
* author: etoa
* 2021-08-14 21:39:12
*/
import java.util.*;

public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
for (; in.hasNext(); ) {
String s = in.nextLine();
for (int i = 0, n = s.length(); i < n; i += 8) {
// StringBuilder sb = new StringBuilder();
String t;
if (i + 8 < n) {
t = s.substring(i, i + 8);
} else {
t = s.substring(i, n);
for (int j = 0, len = t.length(); j < 8 - len; j++) {
t += '0';
}
}
System.out.println(t);
}
}
}
}

原题链接: HJ4. 字符串分隔