判斷一個字符串是不是一個合法的IP地址


最近在筆試的時候遇到碰一道算法題,

要求判斷一個字符串是不是合法的ip地址。

將我的思路發出來分享一下,不一定正確,也不一定是最優的方法。希望能分享一些交流

要求用java或者c來實現,我的java代碼:

 1 public class Test_ip {
 2     //程序入口
 3     public static void main(String[] args) {    
 4         Solution s = new Solution();    // 業務邏輯放在Solution類里面
 5         //String test_str = "12.34.56.67";
 6         String test_str = "256.34.56.67";    // 待解決的字符串
 7         boolean res = s.test_ip(test_str);    //調用判斷方法
 8         System.out.println(res);    //輸出結果
 9     }
10 }
11 
12 class Solution{
13     /**
14      * 判斷一個字符串是否是一個合法的ip地址:
15      *    1 首先檢查字符串的長度 最短應該是0.0.0.0 7位 最長 000.000.000.000 15位
16      *    2 嘗試按.符號進行拆分     拆分結果應該是4段
17      *    3 查看拆分到的每一個子字符串,應該都是純數字
18      *    4 對拆分結果轉成整數 判斷 應該是0到255之間的整數
19      *    5 經過各種磨礪之后 挺過來了!!!返回true
20      */
21     public boolean test_ip(String str){
22         // 1 首先檢查字符串的長度 最短應該是0.0.0.0 7位 最長 000.000.000.000 15位
23         if(str.length()<7 || str.length() >15) return false;    // 如果長度不符合條件 返回false
24         
25         // 2 嘗試按.符號進行拆分     拆分結果應該是4段
26         String[] arr = str.split("\\.");
27         if( arr.length != 4 )    return false;    //如果拆分結果不是4個字串 返回false
28         
29         // 3 查看拆分到的每一個子字符串,應該都是純數字
30         for(int i = 0 ; i <4 ; i++ ){
31             for(int j = 0; j<arr[i].length();j++){
32                 char temp = arr[i].charAt(j);
33                 if(!( temp>'0' && temp< '9' ) ) return false;    //如果某個字符不是數字就返回false
34             }
35         }
36         
37         // 4 對拆分結果轉成整數 判斷 應該是0到255之間的整數
38         for(int i = 0 ; i<4;i++){
39             int temp = Integer.parseInt( arr[i] );
40             if( temp<0 || temp >255)    return false;    //如果某個數字不是0到255之間的數 就返回false
41         }
42         
43         // 5 經過各種磨礪之后 挺過來了!!!返回true
44         return true;
45     }
46 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM