贝壳的进制的题 给我看看为啥通过率只有9

import java.util.Scanner;

public class Main {

public static void main(String[] args) {
Scanner in =new Scanner(System.in);
String str = in.nextLine();
Hanshu han=new Hanshu();
int a =han.hanshu(str);
System.out.println(a);

}

}
class Hanshu{

int hanshu(String str){
int[] abs= new int[str.length()];
String[] s=str.split("\\+|-");

for(int i=0;i<s.length;i++){
if(s[i].charAt(0)=='0'){
if(s[i].charAt(1)=='x'){
s[i]=s[i].replace("0x", "");
abs[i]=Integer.parseInt(s[i],16);
}else {
s[i]=s[i].replace("0", "");
abs[i]=Integer.parseInt(s[i],8);
}
}else {
abs[i]=Integer.parseInt(s[i]);
}

}
int temp=abs[0];
for(int i=0;i<s.length-1;i++){
int m = str.indexOf(s[i])+s[i].length();
char t = str.charAt(m);
if(t=='+'){
temp+=abs[i+1];
}
if(t=='-'){
temp-=abs[i+1];
}
}
return temp;
}
}

#贝壳找房#
全部评论
s[i]=s[i].replace("0", "");会将数字串内部的0也替换掉
点赞 回复
分享
发布于 2018-10-15 21:29
我最开始也是9。。后面想到了比如00,这种情况。就会直接报错,正确做法,首先将加减号和数字分开,然后对数字首字符判断是否为0,然后判断第二个是否为‘x’,接着你懂得,一个栈解决。。
点赞 回复
分享
发布于 2018-10-15 21:51
联想
校招火热招聘中
官网直投
python做法,给8进制开头0后面添加一个o,然后eval(s)
点赞 回复
分享
发布于 2018-10-15 22:53
贝壳这题只需要两行代码就可以全A static ScriptEngine jse = new ScriptEngineManager().getEngineByName("JavaScript"); System.out.println(jse.eval(strs)); strs为输入的表达式 
点赞 回复
分享
发布于 2018-10-16 09:03

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务