• 在字符串中找出连续最长的数字串


    1. 常规思路

        遍历一次,和之前的数字字符串比较长度,找到最长的

     1 /**
     2  * @param str 输入的字符串
     3  */
     4 public void getLongestNumString(String str) {
     5     char[] arr = str.toCharArray();
     6     StringBuilder tmp = new StringBuilder();
     7     String ret = "";
     8     List<String> list = new ArrayList<>();
     9     boolean isConsecutive = false;
    10     for (char ch : arr) {
    11         if (Character.isDigit(ch)) {
    12             if (!isConsecutive) {
    13                 tmp = new StringBuilder();
    14             }
    15             tmp.append(ch);
    16             isConsecutive = true;
    17             if (ret.length() < tmp.toString().length()) {
    18                 ret = tmp.toString();
    19                 list.clear();
    20                 list.add(ret);
    21             } else if (ret.length() == tmp.toString().length()) {
    22                 list.add(tmp.toString());
    23             }
    24         } else {
    25             isConsecutive = false;
    26         }
    27     }
    28 
    29     for (String string : list) {
    30         System.out.print(string);
    31     }
    32     System.out.print(","+ret.length());
    33     System.out.println();
    34 }

    2. 其他思路

    来源:https://www.nowcoder.com/questionTerminal/2c81f88ecd5a4cc395b5308a99afbbec?f=discussion 哎呀哎呀123 的回答

    (利用正则表达式)将所有非数字的字符转换成一个字母,然后按照这个字母进行分隔,最后找到最长的数字串

     1 /**
     2  * private static final String REPLACE_LETTER = "a";
     3  *
     4  * @param str 输入的字符串
     5  */
     6 public void getLongestNumString(String str) {
     7     if (str == null || str.length() == 0) {
     8         System.out.println(0);
     9         return;
    10     }
    11 
    12     str = str.replaceAll("\D+", REPLACE_LETTER);
    13     String[] arr = str.split(REPLACE_LETTER);
    14 
    15     int maxLength = -1;
    16     for (String tmp : arr) {
    17         if (tmp.length() > maxLength) {
    18             maxLength = tmp.length();
    19         }
    20     }
    21 
    22     for (String tmp : arr) {
    23         if (tmp.length() == maxLength) {
    24             System.out.print(tmp);
    25         }
    26     }
    27 
    28     System.out.println("," + maxLength);
    29 }
  • 相关阅读:
    SpringBoot整合Elasticsearch
    Elasticsearch环境搭建和介绍(Windows)
    Java并发AtomicBoolean类的使用
    RequestMapping详细用法
    RSA公钥加密 私钥解密
    java随机生成RSA密钥对
    java通过实体类生成数据库表 并生成注释
    设计模式-策略模式
    设计模式-模板方法模式使用
    设计模式-模板方法模式
  • 原文地址:https://www.cnblogs.com/ainsliaea/p/11407736.html
Copyright © 2020-2023  润新知