数字马力笔试编程题

SQL题:
给你如下表:让你查询出没有选小易老师课程的所有学生
CREATE TABLE `S` (
                     `SNO` varchar(100) COLLATE utf8mb4_bin DEFAULT '' COMMENT '学号',
                     `SNAME` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '姓名'
) ENGINE=InnoDB AUTO_INCREMENT=146 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC COMMENT='学生关系';

CREATE TABLE `C` (
                     `CNO` varchar(100) COLLATE utf8mb4_bin DEFAULT '' COMMENT '课程号',
                     `CNAME` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '课程名',
                     `CTEACHER` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '老师'
) ENGINE=InnoDB AUTO_INCREMENT=146 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC COMMENT='课程关系';

CREATE TABLE `SC` (
                      `SNO` varchar(100) COLLATE utf8mb4_bin DEFAULT '' COMMENT '学号',
                      `CNO` varchar(100) COLLATE utf8mb4_bin DEFAULT '' COMMENT '课程号',
                      `SCORE` bigint(100) NOT NULL DEFAULT '0' COMMENT '成绩'
) ENGINE=InnoDB AUTO_INCREMENT=146 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC COMMENT='选课关系';

INSERT INTO `SC` (`SNO`, `CNO`, `SCORE`)  VALUES   ( '2', '11', 120);
INSERT INTO `S` (`SNO`, `SNAME`)  VALUES  ('2', '小易');
INSERT INTO `C` (`CNO`, `CNAME`, `CTEACHER`)  VALUES  ('11', '小易', '物理老师');

Java题:给你一个字符串让你将他反转并转成大写,但“ali”这个单词不做反转。
例如:
"welcome to alibaba!" -> "!ABABali OT EMOCLEW"
"ali all in, Ali ilA" -> "ALI ILA ,NI LLA ali"
"keep ali" -> "ali PEEK"

题解:
SQL题:两个子查询即可:
select SNAME from S where SNO not in(
    select SNO FROM SC where CNO in(
            select CNO from C where CTEACHER = '小易'
        )
    );

Java题:

import java.util.Scanner;

public class Main {

    /**
     * 思路:先将所有的ali替换成特殊字符。然后正常反转,反转后将ali替换回来
     * @param args
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (sc.hasNextLine()) { // 注意 while 处理多个 case
            String line = sc.nextLine();
            String newLine = invoke(line);
            System.out.println(line+" -> "+newLine);
        }
    }

    static String old = "@";

    public static String invoke(String str) {
        String newStr = str.replaceAll("ali", old);
        char[] chars = newStr.toCharArray();
        char[] newchars = new char[chars.length];
        for (int i = chars.length - 1, j = 0; i >= 0; i--, j++) {
            if (chars[i] >= 'a' && chars[i] <= 'z') {
                chars[i] -= 32;
            }
            newchars[j] = chars[i];
        }
        String s = new String(newchars);
        return s.replaceAll(old, "ali");
    }
}
全部评论

相关推荐

投递喜马拉雅等公司10个岗位
点赞 评论 收藏
分享
1 2 评论
分享
牛客网
牛客企业服务