• 某书2018笔试题之字符串中最大子数字串


    一、题目

    输入一个字符串,该字符串由‘0’-‘9’和大写字母组成,输出该字符串中最大数字,如果有'RED'字符串,则可以消除。如果都为字符,则返回-1。

    例如:
      输入字符串为:ABC224DS33RED4F,则其中的数字有224,334(RED可以消除),因此,最大的数字为334
      输入字符串:AAAFWE,返回-1

    注意:

           考虑到溢出,要用BigInteger


    二、思路

         详见代码

    三、代码

    解法一的代码:

    package redbook3;
    
    /*
    题目:
        输入一个字符串,该字符串由‘0’-‘9’和大写字母组成,输出该字符串中最大数字,如果有'RED'字符串,则可以消除。如果都为字符,则返回-1。例如:
         输入字符串为:ABC224DS33RED4F,则其中的数字有224,334(RED可以消除),因此,最大的数字为334
         输入字符串:AAAFWE,返回-1
    注意:
        考虑到溢出,要用BigInteger
    */
    
    import java.math.BigInteger;
    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            Scanner in=new Scanner(System.in);
            while (in.hasNext()){
                //输入字符串
                String str=in.nextLine();
                //调用方法
                String maxNum=method(str);
                //输出最大数字
                System.out.println(maxNum);
            }
            in.close();
        }
    
        public static String  method(String str) {
            //最大的数字
            BigInteger maxNum = new BigInteger("-1");
    
            //删除RED
            String strTemp=str.replace("RED","");
    
            //替换大写字母,全部换成‘a’
            String strNew=strTemp.replaceAll("[A-Z]","a");
    
            //以一个或者多个‘a’分割
            String[] strings=strNew.trim().split("a+");
    
            //找最大值
            for(int i=0;i<strings.length;i++){
                if(strings[i].equals("")){
                    continue;
                }else if(new BigInteger(strings[i]).compareTo(maxNum)>0){
                    maxNum=new BigInteger(strings[i]);
                }
            }
    
            //都是字符
            if(maxNum.toString().equals("-1")){
                return "-1";
            }
    
            return maxNum.toString();
        }
    }
    View Code

    解法二的代码:

    package redbook3;
    
    /*
    题目:
        输入一个字符串,该字符串由‘0’-‘9’和大写字母组成,输出该字符串中最大数字,如果有'RED'字符串,则可以消除。如果都为字符,则返回-1。例如:
         输入字符串为:ABC224DS33RED4F,则其中的数字有224,334(RED可以消除),因此,最大的数字为334
         输入字符串:AAAFWE,返回-1
    注意:
        考虑到溢出,要用BigInteger
    */
    
    import java.math.BigInteger;
    import java.util.Scanner;
    
    public class Main2 {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            while (in.hasNext()) {
                String s = in.nextLine();
                System.out.println(solve(s));
            }
            in.close();
        }
    
        public static String solve(String s) {
    
            //判断字符串里面有没有数字
            boolean find = false;
            for (int i = 0; i < s.length(); i++) {
                if (Character.isDigit(s.charAt(i))) {
                    find = true;
                    break;
                }
            }
            if (!find) return "-1";
    
            BigInteger maxNum = new BigInteger("-1");
    
            int i = 0;
            BigInteger curNum = new BigInteger("0");
            while (i < s.length()) {
                if (Character.isDigit(s.charAt(i))) {
                    int num = s.charAt(i) - '0';//字符转换成数字
                    curNum = curNum.multiply(new BigInteger("10")).add(new BigInteger("" + num));
                    i++;
                } else {
                    //判断有没有‘RED’
                    if (i + 3 <= s.length() && s.substring(i, i + 3).equals("RED")) {
                        i += 3;
                        continue;
                    } else { //保存当前最大的数字串
                        if (curNum.compareTo(maxNum) > 0) {
                            maxNum = curNum;
                        }
                        curNum = new BigInteger("0");
                        i++;
                    }
                }
            }
            
            if (curNum.compareTo(maxNum) > 0) {
                maxNum = curNum;
            }
    
            return maxNum.toString();
        }
    }  
    View Code

    ---------------------------------------------

    参考链接:

    http://blog.csdn.net/wunengbiao/article/details/78127825

  • 相关阅读:
    Dark 运算符
    Dark 数据类型
    分支管理
    Git 远程仓库
    DELPHI实现百度开放平台
    win2008使用FireDac连接ORACLE数据库问题
    20160115学习日志
    20160113第一个ANDRIOD开发日志
    struts2漏洞与修复
    DELPHI XE5 与SQLITE
  • 原文地址:https://www.cnblogs.com/hezhiyao/p/7732506.html
Copyright © 2020-2023  润新知