C.十六进制
01.
Description
Time limit per test:1.0 seconds
Memory limit:256 megabytes
输入一个字符串,提取字符串中的所有 16 进制数码字符,并转化成十进制整数输出。16 进制的合法表示为:以0x开头,后面是0-9和a-f构成的字符串,可能会在开头出现多个 0。
说明:
保证输入字符串不会出现两个十六进制数首尾相接的情况。即不会出现类似0x100xa的字符串(因为0x100和0xa都是十六进制数)。
在保证第一点的前提下,保证提取出来 16 进制数在unsigned int范围内。
02.
Input, Output and Examples
Input
输入一个长度不超过 105 的字符串,由小写英文字母和数字构成。
对于 70% 的字符串,长度不超过 1000。
Output
输出请按照输入中出现的顺序。
如果字符串中没有合法的 16 进制数码。则输出 −1。
如果字符串中有多个合法的 16 进制数,则依次输出,中间用一个空格分隔。
Examples
input
0xax
output
10
input
0x13g0x10a
output
19 266
input
0xerts
output
14
input
190a
output
-1
03.
Analysis
本题直接按顺序模拟就可以。例如读到一个“0x”,直接从下一位开始读入数字,直到读到第一个非16进制数为止,然后继续搜索下一个“0x”。注意边界条件判断:如最末尾两个字符不可能构成一个十六进制数,注意像0x30xq0x80x这样的情况。
04.
Code
图文:李英韬
排版:吴学懿
领取专属 10元无门槛券
私享最新 技术干货