最近在筆試的時候遇到碰一道算法題,
要求判斷一個字符串是不是合法的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 }