import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 String s = in.next(); s = s.substring(2); int t = 1, res = 0; for(int i = s.length()-1; i >= 0; i--){ char tmp = s.charAt(i); if(tmp == 'A'){ res += t * 10; }else if(tmp == 'B'){ res += t * 11; }else if(tmp == 'C'){ res += t * 12; }else if(tmp == 'D'){ res += t * 13; }else if(tmp == 'E'){ res += t * 14; }else if(tmp == 'F'){ res += t * 15; }else{ res += t * (tmp - '0'); } t*= 16; // System.out.println(res); } System.out.println(res); } }
直接模拟,从字符串的后面开始遍历,每一位都是上一位的16倍;前面两个字符0x直接截掉
#牛客春招刷题训练营# https://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6。