import
java.util.*
;
class
Main
{
public
static
void
main
(
String
agrs
[]){
Scanner
sc
=
new
Scanner
(
System
.
in
);
while
(
sc
.
hasNext
()){
String
str
=
sc
.
next
();
//System.out.println(str);
int
k
=
0
,
s
=
0
;
int
[]
a
=
new
int
[
1000
];
char
[]
ch
=
null
;
boolean
flag
=
false
;
ch
=
str
.
toCharArray
();//将字符串转换为字符数组
for
(
int
i
=
0
;
i
<
ch
.
length
;
i
++){
if
(
ch
[
i
]!=
'5'
){//以5为界限,将字符转化为整型放入数组
flag
=
true
;//处理假如第一个为5是出现的特殊情况
a
[
k
]=
s
+
ch
[
i
]-
48
;
s
=
a
[
k
]*
10
;
}
else
if
(
i
!=
0
&&
i
!=
ch
.
length
-
1
){
if
(
ch
[
i
+
1
]!=
'5'
&&
flag
){//处理多个5在一起时出现的特殊情况
k
+=
1
;
s
=
0
;
}
}
}
/*for(int i=0;i<=k;i++){
System.out.println(a[i]);
}*/
sort
(
a
,
k
+
1
);
for
(
int
i
=
0
;
i
<
k
;
i
++){
System
.
out
.
print
(
a
[
i
]+
" "
);
}
System
.
out
.
println
(
a
[
k
]);
}
}
public
static
void
sort
(
int
[]
a
,
int
n
){//进行排序(选择排序法)
int
min
;
for
(
int
i
=
0
;
i
<
n
-
1
;
i
++){
min
=
i
;
for
(
int
j
=
i
+
1
;
j
<
n
;
j
++){
if
(
a
[
min
]>
a
[
j
])
min
=
j
;
}
if
(
i
!=
min
){
a
[
i
]=
a
[
i
]^
a
[
min
];
a
[
min
]=
a
[
i
]^
a
[
min
];
a
[
i
]=
a
[
i
]^
a
[
min
];
}
}
}
}
用java里的split方法对字符串的处理就容易多了
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 |
import
java.util.*
;
class
Main
{
public
static
void
main
(
String
agrs
[]){
Scanner
sc
=
new
Scanner
(
System
.
in
);
while
(
sc
.
hasNext
()){
String
str
=
sc
.
next
();
//System.out.println(str);;
int
[]
a
=
new
int
[
1000
];
char
[]
ch
=
null
;
boolean
flag
=
false
;
String
strs
[]=
str
.
split
(
"5"
);//字符串中以五为界限将字符串划分为多个子字符串
int
k
=
0
;
for
(
int
i
=
0
;
i
<
strs
.
length
;
i
++){
if
(
strs
[
i
].
length
()!=
0
){//判断子字符串是否为空
k
++;
//System.out.println(strs[i]+" ");
a
[
k
-
1
]=
fun
(
strs
[
i
]);//子字符串转换为整数
}
}
sort
(
a
,
k
);
for
(
int
i
=
0
;
i
<
k
-
1
;
i
++){
System
.
out
.
print
(
a
[
i
]+
" "
);
}
System
.
out
.
println
(
a
[
k
-
1
]);
}
}
public
static
void
sort
(
int
[]
a
,
int
n
){//排序
int
min
;
for
(
int
i
=
0
;
i
<
n
-
1
;
i
++){
min
=
i
;
for
(
int
j
=
i
+
1
;
j
<
n
;
j
++){
if
(
a
[
min
]>
a
[
j
])
min
=
j
;
}
if
(
i
!=
min
){
a
[
i
]=
a
[
i
]^
a
[
min
];
a
[
min
]=
a
[
i
]^
a
[
min
];
a
[
i
]=
a
[
i
]^
a
[
min
];
}
}
}
public
static
int
fun
(
String
str
){//将字符串转化为整数
int
s
=
0
,
sum
=
0
;
for
(
int
i
=
0
;
i
<
str
.
length
();
i
++){
sum
=
s
+
str
.
charAt
(
i
)-
48
;
s
=
sum
*
10
;
}
return
sum
;
}
}
|
数据测试:
00005051231232050775
0 0 77 12312320
50512312320555507750005
0 0 77 12312320
505123123205077
0 77 12312320
051231232055077
0 77 12312320
5550
0
1155663535006555
3 6 11 663
10000000055051120
0 1120 100000000
00060054
4 600