ip地址

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

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

將個人思路發出來分享一下,不必定正確,也不必定是最優的方法。但願能分享一些交流spa

要求用java或者c來實現,個人java代碼:ip

  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. }
相關文章
相關標籤/搜索