zoukankan      html  css  js  c++  java
  • 面试题记录,备忘

    1  找到两个字符串中的公共子字符串,如stra="abfdsaf",strb="fdsgdfg",找出两个字符串的公共字串fds,由于java还不熟练,不是最优的方案,有机会优化

     1 public class MyTestDemo {
     2     //被测试字符串a
     3     String stra = "abfdsaf";
     4     //被测试字符串a
     5     String strb = "abfdsaf";//fdsgdfg
     6     //存储两个字符串的最大长度和最小长度
     7     int min,max;
     8     //判断出最长的字符串后,将长度最大的字符串存储再strMax,长度小的字符串给strMin
     9     String strMin,strMax;
    10     //存储找到的所有字符串
    11     ArrayList<String> sameString = new ArrayList();
    12     //存储最大子字符串
    13     String result;
    14     
    15     @Test
    16     public void getSameSubString(){
    17         //找出长短字符串,并赋值给变量
    18         if(stra.length() <= strb.length()?true:false){
    19             min = stra.length();
    20             max = strb.length();
    21             
    22             strMin = stra;
    23             strMax = strb;
    24             
    25             isSubString();
    26         }
    27         else{
    28             min = strb.length();
    29             max = stra.length();
    30             
    31             strMin = strb;
    32             strMax = stra;
    33             
    34             isSubString();
    35         }
    36     }
    37     
    38     /**
    39      * 遍历最小长度字符串,截取子字符串,依次左移截取,每次遍历截取子字符串,并使用indexOf方法,判断截取的字符串是否在最大长度的字符串中出现,如果出现就添加到ArrayList中,最后遍历ArrayList,找到最大长度的字符串
    40      */
    41     public void isSubString(){
    42         String more,less,temp;
    43         for(int j=0;j<=min;j++){
    44             for(int i=min;i>=j;i--){
    45                 if(strMax.indexOf(strMin)>0){
    46                     sameString.add(strMin);
    47                 }
    48                 if((strMax.indexOf(strMin.substring(j, i))) > 0 ){
    49                     sameString.add((strMin.substring(j, i)));       //还有题目要求找出最大公共字符串,再if里加上break即可,不加则输出所有子字符串                    
    50                 }
    51             }            
    52         }
    53         result = sameString.get(0);
    54         
    55         for(int i=1;i<sameString.size();i++){
    56             if(result.length() < sameString.get(i).length()){
    57                 result = sameString.get(i);
    58             }
    59         }
    60         System.out.println(result);
    61     }
    62 }

  • 相关阅读:
    六十三:CSRF攻击与防御之系统准备之登录与转账功能
    六十二:CSRF攻击与防御之系统准备之注册功能
    六十一:Flask.Session之flask操作session
    并发编程之多进程篇之二
    并发编程之多进程篇之一
    网络编程之文件传输实例
    网络编程基础之粘包现象与UDP协议
    网络编程基础之Socket套接字简单应用
    TCP协议的三次握手和四次挥手
    网络编程基础之Socket套接字
  • 原文地址:https://www.cnblogs.com/test-researcher/p/9375136.html
Copyright © 2011-2022 走看看