今天邮箱收到一份笔试题 于是试着做一做。。。
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));
}
}
}