• 华为机试测试- 字符串最长的数字串


    输入

    输入一个字符串。

    输出

    输出字符串中最长的数字字符串和它的长度。

    如果数字字符串为空,则只输出0

    如 input: dadfsaf  output:0

    样例输入 abcd12345ed125ss123058789
    样例输出 123058789,9
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            Scanner scanner=new Scanner(System.in);
            String[] strs={"ab","a","b"};
            Arrays.sort(strs);
            List<String> list=Arrays.asList(strs);
            System.out.println(list);
            scanner.close();
        }
        
        public static String get(String text)
        {
            int max=0;
            int len=text.length();
            List<String> list=new ArrayList<String>();
            String temp="";
            int start=0,end=0;
            boolean num=false;
            for(int i=0;i<len;i++)
            {
                char c=text.charAt(i);
                if(c>='0'&&c<='9')
                {
                    if(!num)
                    {
                        num=true;
                        start=i;
                    }
                    if(i==len-1)
                    {
                        if(len-start>=max)
                        {
                            temp=text.substring(start);
                            if(len-start>max)
                            {
                                list.clear();
                                list.add(temp);
                            }
                            else 
                            {
                                list.add(temp);
                            }
                            max=len-start;
                        }
                    }
                }
                else
                {
                    if(num)
                    {
                        num=false;
                        end=i;
                        if(end-start>=max)
                        {
                            temp=text.substring(start,end);
                            if(end-start>max)
                            {
                                list.clear();
                                list.add(temp);
                            }
                            else 
                            {
                                list.add(temp);
                            }
                            max=end-start;
                        }
                        end=0;
                    }
                }
            }
            if(max==0)
                return "0";
            String result="";
            for(int i=0;i<list.size();i++)
            {
                result+=list.get(i)+",";
            }
            return result+max;
        }
    }

     求最长的连续子串

        public static int continueMax(String str)
        {
            int cnt=0,pos=0,max=0;
            int len=str.length();
            for(int i=0;i<len;i++)
            {
                if(str.charAt(i)>='0' && str.charAt(i)<='9')
                {
                    cnt++;
                    if(cnt>max)//动态的设置起点,避免判断是不是最后一个点
                    {
                        max=cnt;
                        pos=i-max+1;
                    }
                }
                else
                {
                    cnt=0;
                }
            }
            System.out.println(str.substring(pos, pos+max));
            return max;
        }
  • 相关阅读:
    [哈希][倍增] Jzoj P5856 01串
    [exgcd] Jzoj P5855 吃蛋糕
    [折半搜索][分治][二分] Jzoj P5851 f
    [lca][主席树] Jzoj P5850 e
    [二分][树状数组] Jzoj P5849 d
    [容斥] Jzoj P5843 b
    [前缀和][枚举] Jzoj P5842 a
    [平衡规划][模拟][前缀和] Jzoj P4724 斐波那契
    [spfa] Jzoj P4722 跳楼机
    [模拟] Jzoj P2499 东风谷早苗
  • 原文地址:https://www.cnblogs.com/maydow/p/4784098.html
Copyright © 2020-2023  润新知