贝壳笔试求交流思路

就AC了第二道,质量不高大佬勿笑。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

/**
 * Created by JSC on 2018/10/15.  027555+692-0xD32C
 */
public class Main {
    public static void main(String args[]){
        Scanner in = new Scanner(System.in);
        String s = in.next();
        ArrayList<String> list = new ArrayList<>();
        for (int i = 0; i < s.length(); i++) {
            if(s.substring(i,i+1).equals("+")){
                list.add("+");
            }
            if(s.substring(i,i+1).equals("-")){
                list.add("-");
            }
        }
        //System.out.println(list);
        String sArr[] = s.split("\\+|\\-");
        //System.out.println(Arrays.toString(sArr));
        int a[] = new int[sArr.length];
        for (int i = 0; i < sArr.length; i++) {
            String str = sArr[i];
            if (str.substring(0,1).equals("0")){
                if (str.substring(1,2).equals("x")){
                    //十六进制
                    Integer x = Integer.parseInt(str.substring(2),16);//从第2个字符开始截取
                    a[i] = x;
                }else {
                    //八进制
                    Integer y = Integer.parseInt(str,8);//从第2个字符开始截取
                    a[i] = y;
                }
            }else{
                //十进制数
                a[i] = Integer.valueOf(str);
            }
        }
        //System.out.println(Arrays.toString(a));
        int sum = 0;
        for (int i = 0; i < list.size(); i++) {
            if(list.get(i).equals("-")){
                a[i+1] = -a[i+1];
            }
        }
        for (int i = 0; i < a.length; i++) {
            sum += a[i];
        }
        System.out.println(sum);
    }
}

#贝壳找房#
全部评论
笔试做的最好的一次了吧,AC了两道 第一道 第二道
点赞 回复
分享
发布于 2018-10-15 21:02
为什么我贴代码是乱的
点赞 回复
分享
发布于 2018-10-15 21:02
百信银行
校招火热招聘中
官网直投
js 正则怼 let str = read_line(); str = '+' + str; // 给字符串前面加上个符号,方便用正则表达式提取 function strToInt(s) { // 自定义解析成整数的函数 let base = 10; if (s.charAt(1) === '0') { if (s.charAt(2) === 'x') { base = 16; } else { base = 8; } } return parseInt(s, base) } let result = 0; // 保存最终结果 const r = /[\+\-]\w*/g; //提取 + 号 或 - 号开头的包含 a-zA-Z0-9_ 这些的字符串 let m; while ((m = r.exec(str)) != null) { // 分组来,一个一个相加,即可输出结果 result += strToInt(m[0]); } printsth(result);
点赞 回复
分享
发布于 2018-10-15 21:03
你是我的第三道 我的第二道是求最长可以整除序列的个数 没ac
点赞 回复
分享
发布于 2018-10-15 21:03
拳皇直接计算 M整除序列dp(但是测试出了问题,僵硬了 混合算式截串直接加
点赞 回复
分享
发布于 2018-10-15 21:06
C++“游戏伤害”那题,只AC36%,不知道为什么
点赞 回复
分享
发布于 2018-10-15 21:06
不确定正解,中间断网了半小时,来不及提交 #include<cstdio> #include<string> #include <string> #include <iostream> #include <vector> using namespace std; int dp[1010][1010]; vector<int> v; int n,m; int main(int argc, char const *argv[]) { cin>>n>>m; dp[1][m]=1; for(int i=1;i<=m;++i) if(m%i==0) v.push_back(i); for(int i=2;i<=n;++i) for(int j=1;j<=m;++j) if(dp[i-1][j]) { for(auto x:v) { if(j<x) break; else if(j%x==0) dp[i][x]+=dp[i-1][j]; } } int ans=0; for(auto x:v) ans+=dp[n][x]; printf("%d\n", ans); return 0; }
点赞 回复
分享
发布于 2018-10-15 21:07
对打回合制只有36% 八进制十六进制ac 剩下那个输入案例27%
点赞 回复
分享
发布于 2018-10-15 21:17

相关推荐

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