判斷字串是否為合法ip
週三去B商搜面試,連著面了三面,對體力也是一個不小的考驗,三面也是技術面,其中程式碼題為判斷字串是否為合法IP
之前IP的題寫過32位int轉換為IP的,還好數字串判斷是否能成為IP的DFS,字串判斷IP的還沒遇見過
經過思考之後,先確定方向,是一道字串處理的題,合法ip的話主要有以下幾點:
1.合法IP只有'.'和'1-9'其他的字元都幹掉
2.IP串為四個數字3個'.'不符合的幹掉
3.連續的'..'幹掉
4.數字在0-255以外的幹掉
5.非0數字前有0的也幹掉
然後開始手寫,之前寫的時候沒考慮到010的情況,後來發現了加了一個邏輯判斷,總的來說思路沒啥問題,附上程式碼:
bool isValidIP(char* str){ if (NULL==str) { return false; } bool preIsNum=false; int numOfPoint=0; int numOfNum=0; char *p=str; while ('\0'!=*p&&numOfPoint<=3&&numOfNum<=4) { if('.'!=*p&&(*p<'0'||*p>'9')){ return false; } if('.'==*p){ if (!preIsNum) { return false; } else { preIsNum=false; numOfPoint++; } p++; } else{ int tmp=0; bool prevHasZero=0; while ('\0'!=*p&&*p>='0'&&*p<='9') { if (prevHasZero==true) { return false; } if (*p=='0'&&tmp==0) { prevHasZero=true; } tmp=tmp*10+(*p-'0'); p++; } if (tmp<0||tmp>255) { return false; } numOfNum++; preIsNum=true; } } if (numOfPoint==3&&numOfNum==4) { return true; } else{ return false; } }
附上檢查程式碼和結果:
int main(){ char a[][10] ={"0","000000"}; char *b[] ={"","a","000","0.123.456.2","000.000.0.0",".0.0.3.2",".0.0.0.0","1.1.256.1","1.2.a.2","00.0.0.0","0.00.0.0","010.010.010.010"}; char *c[] ={"0.0.0.0","1.1.1.1","100.100.100.100","255.255.255.255"} ; ofstream outfile; outfile.open("out.txt"); cout<<setw(20)<< setiosflags(ios::left)<<"無效IP"<<setw(20)<<"判斷結果"<<endl; outfile<<setw(20)<< setiosflags(ios::left)<<"無效IP"<<setw(20)<<"判斷結果"<<endl; for (int i=0;i<sizeof(b)/sizeof(b[0]);i++) { cout<<setw(20)<< setiosflags(ios::left)<<b[i]<<setw(20)<<isValidIP(b[i])<<endl; outfile<<setw(20)<< setiosflags(ios::left)<<b[i]<<setw(20)<<isValidIP(b[i])<<endl; } cout<<setw(20)<< setiosflags(ios::left)<<"有效IP"<<setw(20)<<"判斷結果"<<endl; outfile<<setw(20)<< setiosflags(ios::left)<<"有效IP"<<setw(20)<<"判斷結果"<<endl; for (int i=0;i<sizeof(c)/sizeof(c[0]);i++) { cout<<setw(20)<< setiosflags(ios::left)<<c[i]<<setw(20)<<isValidIP(c[i])<<endl; outfile<<setw(20)<< setiosflags(ios::left)<<c[i]<<setw(20)<<isValidIP(c[i])<<endl; } outfile.close(); }
相關推薦
判斷字串是否為合法ip
週三去B商搜面試,連著面了三面,對體力也是一個不小的考驗,三面也是技術面,其中程式碼題為判斷字串是否為合法IP 之前IP的題寫過32位int轉換為IP的,還好數字串判斷是否能成為IP的DFS,字串判斷IP的還沒遇見過 經過思考之後,先確定方向,是一道字串處理的題,合法ip的
[iOS]判斷字串是否為合法郵箱地址
- (IBAction)saveEmailAction:(id)sender { if ([self isValidateEmail:_mailField.text]) { [self.delegate saveEmail:_mailField.text];
數字字串是否為合法IP地址
以下程式碼亟待改進 #include <iostream> #include <string> using namespace std; bool check_range(string s){ int i = stoi(s); if (i
Python判斷字串是否為合法標示符
這學期在學習編譯原理,最近的上機作業就是做一個簡單的詞法分析器,在做的過程中,突然有個需求就是判斷一個字串是否為合法的標示符,因為我是用python語言做的,做的是Python的詞法分析器,於是下面分享以下怎樣判斷一個字串是合法的標示符。 首先,我們來熟悉以下
shell 判斷字串是否為有效ip地址
IPADDR=192.168.1.1 (有效)IPADDR=192.168.0.254(有效)IPADDR=10.0.0.0(無效)IPADDR=0.1.1.1(無效)IPADDR=192.168.001.001 (無效)IPADDR=1aa.2bb.3cc.4dd (無效)IPADDR=aaa.bbb.cc
正則判斷為空或為合法ip欄位
^(\\s&&[^\\f\\n\\r\\t\\v])* 判斷為空 (2(5[0-5]{1}|[0-4]\d{1})|[0-1]?\d{1,2})(\.(2(5[0-5]{1}|[0-4]\d{1})|[0-1]?\d{1,2})){3} 判斷為合法ipv4地址 /^[\s
判斷字串是否為IP地址
bool IsIPAddress(const char *str) { if(str==NULL || *str=='\0' || *str=='.') //這個地方就不解釋了 return false; int len=strlen(str); int i=0,
判斷字串是否為IP地址。
public class Main { private boolean isRightIp(String ipAddress){ String ips[] = ipAddress.split("\\.");
判斷某個字串是否是合法IP
使用的標頭檔案以及巨集定義: #include <stdio.h> #include <string.h> // strlen() #include <a
python實現判斷一個字串是否是合法IP地址
一個剛結束的筆試題目,簡單貼一下吧,下面是具體實現: #!usr/bin/env python #encoding:utf-8 ''' __Author__:沂水寒城 功能:判斷一個字串是否是合法IP地址 ''' import re def judge_lega
依次判斷一系列給定的字串是否為合法的 Python 識別符號
# -*- coding: utf-8 -*- """ Created on Wed Aug 1 11:08:45 2018 @author: 金曉 """ #判斷是否為合法的Python識別符號 #識別符號:首字元必須是字母或下劃線,後面的字元只能是字母、數字、下劃線
js 判斷字串是否為數字(正整數)
/** * 判斷字串是否為數字 * @param nubmer * @returns {boolean} */ function checkRate(nubmer) { //判斷正整數/[1−9]+[0−9]∗]∗/ var re = /^[0-9]+.?[0-9]*/;
java 判斷字串是否為亂碼
以下是一個事例: import java.util.regex.Matcher; import java.util.regex.Pattern; public class MessyCodeCheck { public static boolean isChinese(char c) {
java判斷字串是否為數字或小數
public static boolean isNumeric(String str){ Pattern pattern = Pattern.compile("[0-9]*"); if(str.indexOf(".")>0){//判斷是否有小數點 if(str.
java判斷字串是否為亂碼
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
[轉]Python判斷字串是否為字母或者數字
str_1 = "123" str_2 = "Abc" str_3 = "123Abc" #用isdigit函式判斷是否數字 print(str_1.isdigit()) Ture print(str_2.isdigit()) False print(str_3.isdigit()) False #
正則表示式判斷字串是否為數字
IF cl_abap_matcher=>matches( pattern = '^(-?[1-9]\d*(\.\d*[1-9])?)|(-?0\.\d*[1-9])$' text = '1.01' ) = abap_true. WRITE '數字'. ELSE.
java判斷字串是否為正負整數或浮點數
package org.fiend.basetest; import org.apache.commons.lang3.StringUtils; import java.util.regex.Pattern; /** * 判斷字串是否為正負整數或浮點數 * @author Adminis
java 判斷字串是否為數字(包含負數)
public static void main(String[] args){ System.out.println(AssistController.isNumeric("-77"));}public static boolean isNumeric(String str){ Pattern pa
正則判斷字串是否為數值(正數、負數、小數)
在用MapReduce進行處理業務時,發現HDFS中的資料有的列為漢字、有的列為字串、有的列為正數、有的為負數、有的為小數,根據業務要求只有數字參與運算,因此首先清洗資料,用正則提取所有數值: public boolean isNumber(String str){ &