自测可以通过,IDEA结果也一样通过,这程序有Bug


题目信息

1、对输入的字符串进行加解密,并输出。

2加密方法为:

当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;

当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;

其他字符不做变化。

3、解密方法为加密的逆过程。


接口描述:

实现接口,每个接口实现1个基本操作:

void Encrypt (char aucPassword[], char aucResult[]):在该函数中实现字符串加密并输出

说明:

1、字符串以\0结尾。

2、字符串最长100个字符。


int unEncrypt (char result[], char password[]):在该函数中实现字符串解密并输出

说明:

1、字符串以\0结尾。

2、字符串最长100个字符。


代码
import java.util.*;
import java.util.regex.Pattern;

public class Main {
    
    public void Encrypt(char[] originArr, char[] password) {
        StringBuilder stringBuilder = new StringBuilder();
        for (char c : originArr) {
            if (upperCasePattern.matcher(String.valueOf(c)).matches()) {
                if (c == 'Z') {
                    stringBuilder.append("a");
                } else {
                    char convert = (char) (Integer.valueOf(c) + 33);
                    stringBuilder.append(convert);
                }
            } else if (lowerCasePattern.matcher(String.valueOf(c)).matches()) {
                if (c == 'z') {
                    stringBuilder.append("A");
                } else {
                    char convert = (char) (Integer.valueOf(c) - 31);
                    stringBuilder.append(convert);
                }
            } else if (numpattern.matcher(String.valueOf(c)).matches()) {
                if (c == '9') {
                    stringBuilder.append("0");
                } else {
                    int convert = Integer.valueOf(String.valueOf(c)) + 1;
                    stringBuilder.append(convert);
                }
            } else {
                stringBuilder.append(c);
            }
        }
        System.out.println(stringBuilder.toString());
    }

    public int unEncrypt (char[] encryptArr, char[] password) {
        StringBuilder stringBuilder = new StringBuilder();
        for (char c : encryptArr) {
            if (upperCasePattern.matcher(String.valueOf(c)).matches()) {
                if (c == 'A') {
                    stringBuilder.append("z");
                } else {
                    char convert = (char) (Integer.valueOf(c) + 31);
                    stringBuilder.append(convert);
                }
            } else if (lowerCasePattern.matcher(String.valueOf(c)).matches()) {
                if (c == 'a') {
                    stringBuilder.append("Z");
                } else {
                    char convert = (char) (Integer.valueOf(c) - 33);
                    stringBuilder.append(convert);
                }
            } else if (numpattern.matcher(String.valueOf(c)).matches()) {
                if (c == '0') {
                    stringBuilder.append("9");
                } else {
                    int convert = Integer.valueOf(String.valueOf(c)) - 1;
                    stringBuilder.append(convert);
                }
            } else {
                stringBuilder.append(c);
            }
        }
        System.out.println(stringBuilder.toString());
        return 0;
    }

    public static final Pattern numpattern = Pattern.compile("\\d+");
    public static final Pattern upperCasePattern = Pattern.compile("[A-Z]");
    public static final Pattern lowerCasePattern = Pattern.compile("[a-z]");

    /**
     * 当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;
     * 当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;
     * @param args
     */
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String originStr = scanner.nextLine();
        String encryptStr = scanner.nextLine();
        Main main = new Main();
        char[] originArr = originStr.toCharArray();
        char[] encryptArr = encryptStr.toCharArray();
        char[] password = new char[originArr.length];
        main.Encrypt(originArr, password);
        main.unEncrypt(encryptArr, password);
    }
}

idea 中也调试了,结果也有,和测试用例的一样

保存调试是这个结果


有好几题是这样了,求解

#LINE##笔试题目#
全部评论
楼主是你没处理多个case,你看看下面的提示,点击一下多个case
1
送花
回复
分享
发布于 2020-02-02 17:20
@管理员 这个bug 需要修复呀
点赞
送花
回复
分享
发布于 2020-02-02 16:45
秋招专场
校招火热招聘中
官网直投
顶,好几题这样了,难道不支持java
点赞
送花
回复
分享
发布于 2020-02-02 16:45
import java.util.*; public class Main {          public static void main(String[] args) {         Scanner scanner = new Scanner(System.in);         Map<Character, Integer> countMap = new LinkedHashMap<>();         String inputStr = scanner.nextLine();         char[] charArr = inputStr.toCharArray();         for (char c : charArr) {             Integer count = countMap.get(c);             if (count == null) {                 count = 0;             }             count++;             countMap.put(c, count);         }         List<Integer> integerList = new ArrayList<>(countMap.values());         int min = integerList.get(0);         for (int i = 1; i < integerList.size(); i++) {             int num = integerList.get(i);             if (num < min) {                 min = num;             }         }         List<Character> resultChars = new ArrayList<>();         Set<Map.Entry<Character, Integer>> entrySet = countMap.entrySet();         for (Map.Entry<Character, Integer> entry : entrySet) {             Character key = entry.getKey();             Integer value = entry.getValue();             if (min != value.intValue()) {                 resultChars.add(key);             }         }         StringBuilder stringBuilder = new StringBuilder();         for (char c : charArr) {             if (resultChars.contains(c)) {                 stringBuilder.append(c);             }         }         System.out.println(stringBuilder);     } } 还有这题  题目描述 实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。 
点赞
送花
回复
分享
发布于 2020-02-02 16:52
题目描述 开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面。 import java.util.Scanner; import java.util.regex.Pattern; public class Main {          public static void main(String[] args) {         int x = 0;         int y = 0;         Scanner scanner = new Scanner(System.in);         String inputStr = scanner.nextLine();         Pattern pattern = Pattern.compile("[WASD]\\d{1,2}");         String[] inputArr = inputStr.split(";");         for (String controlStr : inputArr) {             if (pattern.matcher(controlStr).matches()) {                 String constr = controlStr.substring(0,1);                 int num = Integer.valueOf(controlStr.substring(1));                 if ("A".equals(constr)) {                     x -= num;                 } else if ("D".equals(constr)) {                     x += num;                 } else if ("W".equals(constr)) {                     y += num;                 } else if ("S".equals(constr)) {                     y -= num;                 } else {                 }             }         }         System.out.print(x + "," + y);     } }
点赞
送花
回复
分享
发布于 2020-02-02 16:53
以上几题自测都存在相同问题, 没人修复 bug 么
点赞
送花
回复
分享
发布于 2020-02-02 16:54
自测通过,然后提交通过率0?
点赞
送花
回复
分享
发布于 2020-02-02 17:19

相关推荐

感觉这一周太梦幻了,就像一个梦,很不真实~~~感觉这个暑期,我的运气占了99成,实力只有百分之一4.15上午&nbsp;腾讯csig&nbsp;腾讯云部门,面完秒进入复试状态4.16下午&nbsp;美团优选供应链部门,4.18上午发二面4.17晚上&nbsp;阿里国际一面,纯拷打,面完我都玉玉了4.18下午&nbsp;阿里国际二面,是我们leader面的我,很轻松~~4.18晚上&nbsp;约了hr面4.19上午&nbsp;hr面,下午两点口头oc4.19晚上&nbsp;意向书说起来我的暑期好像一次都没挂过~~~~~难道我是天生面试圣体?----------------------------------------------------------------------六个月前,我还是0项目0刷题,当时想的是先把论文发出来再去找实习。结果一次组会,老师打破了我的幻想(不让投B会,只让投刊或者A)我拿头投啊!!!然后就开始物色着找实习,顺便做完了mit的6.s081,但是基本上还是没刷过题目-----------------------------------------------------------------------11月&nbsp;&nbsp;一次偶然的机会,面进了某个耳机厂的手环部门,大概是做嵌入式的,用的是CPP。12月&nbsp;莫名其妙拿到了国创的面试机会,0基础四天速成java基础!居然也给我面过了hhhhh,可能是面试没写题吧入职国创后的几个月,一直没活,天天搁那看剧,都快忘了还有暑期实习这回事了~~~~命运的齿轮在2.26开始转动,因为这一天美团开了,我开始慌了,因为那时的我什么都不会。lc,八股,sql全部是0进度。然后就开始了女娲补天,上班刷题,下班继续做之前的开源,顺便学一学八股。3月到现在,lc也刷到快200了,一天最多提交了47次~~~~~~~~~~八股根据别人的面经总结和博客,写了快十万字的笔记~~~~~~~~~~简历上的实习经历和开源,也努力去深挖了,写了几万字的记录~~~~~~所以面试的时候,基本上都能cover了,面试官问到的基础基本都会,不基础的我就把他往我会的地方引。结果好像还不错,基本上每个面试官评价都挺好的emmmmmmmm
投递阿里巴巴等公司10个岗位
点赞 评论 收藏
转发
点赞 1 评论
分享
牛客网
牛客企业服务