合法IP地址的判断、关于给定字符串,求最大不重复子串 -- JAVA 算法题

本文提供了一个用于验证字符串是否为合法IPv4地址的Java算法,并给出了一种寻找给定数字字符串中最长非重复子串的有效方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天邮箱收到一份笔试题  于是试着做一做。。。

1、写一个算法判断某个字符串是不是一个合法的IP地址。

Java:

import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

 public class Dss {

       publicstatic boolean isIdentifierIP(String input) {

              if(input != null && input.length() > 0) {

              String[]ipn = input.split("\\.");

              try{

                     if(Integer.parseInt(ipn[0])>0&&Integer.parseInt(ipn[0])<=255   //第一个不能为0

                                   &&Integer.parseInt(ipn[1])>=0&&Integer.parseInt(ipn[1])<=255

                                          &&Integer.parseInt(ipn[2])>=0&&Integer.parseInt(ipn[2])<=255

                                             &&Integer.parseInt(ipn[3])>=0&&Integer.parseInt(ipn[3])<=255){

                                                 returntrue;

                                          }

              }catch (NumberFormatException e) {

                     //TODO Auto-generated catch block

                     returnfalse;

              }

       }

              returnfalse;

       }

       publicstatic void main(String[] args) {

              Scannerscanner = new Scanner(System.in);

              Stringinput = null;

              System.out.println("请输入待判断字符串:");

              if(scanner.hasNext()){

               input = scanner.nextLine();

              }

              if(isIdentifierIP(input))

                     System.out.println("该字符串是一个合法的IP地址!");

              else

                     System.out.println("该字符串不是一个合法的IP地址!");

       }

}

2、给定一字符串只包含数字,请写一个算法,找出该字符串中的最长不重复子串(不重复是指子串中每一元素不同于子串中其他元素)

如: “120135435”最长不重复子串为"201354"

package com.test;
import java.util.Scanner;
public class Mainss {
public static String  longestNotReapeatSub(String s){
       int max=0;
       String result="";
       for(int i=0;i<s.length();i++){
           StringBuilder sb= new StringBuilder();
           sb.append(String.valueOf(s.charAt(i)));
           for(int j=i+1;j<s.length();j++){
               if(sb.lastIndexOf(String.valueOf(s.charAt(j)))==-1){//没有重复出现,则添加
                   sb.append(s.charAt(j));
               }else {
                   if(sb.length()>max){
                       max=sb.length();
                       result=sb.toString();
                   }
                   break;//重复出现了则跳出循环了
               }
               if(sb.length()>max&&j==s.length()-1){//没有出现重复  且到了字符串的末尾
                    max=sb.length();
                    result=sb.toString();
                   }
           }
       }
       return result;
   }
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
String str = sc.nextLine();
System.out.println(longestNotReapeatSub(str));
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值