日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HUT-1556 网址

發布時間:2025/3/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HUT-1556 网址 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1556: 網址

Time Limit: 1 Sec??Memory Limit: 128 MB
Submit: 16??Solved: 4
[Submit][Status][Web Board]

Description

我們平時上網總是需要輸入網址的,可是,這里有一堆的字符串,請判斷這是不是一個網址。

網址的規則如下:

1、網址由協議、域名、端口、路徑和文件構成,一個網址的實例:http://openoj.awaysoft.com:80/JudgeOnline/index.html

2、協議,以協議名+://構成,如1中的http://,這里限定使用ftp和http兩種協議,這部分可以省略。

3、域名由字母、數字、下劃線、減號以及小數點組成,小數點前后必須有數字或字母或下劃線或減號,如1中的openoj.awaysoft.com,這部分必須有。域名需要以.com、.cn、.org、.net結束。

4、端口,在域名后加:跟一個數字,如文中的:80,這部分可以省略。

5、路徑,由字母、數字、下劃線、減號、斜杠構成,斜杠前后必須有字母、數字、下劃線或者減號,如文中的/JudgeOnline/,這部分可以省略

6、文件,由字母、數字、下劃線、減號、點構成,點前后必須有字母、數字、下劃線或者減號,如文中的index.html,這部分可以省略

注意:

1、路徑必須以/開頭,如果沒有路徑,那么文件前必須有/。

2、除了協議后面的/,不得有兩個//連續。

以下是合法的網址:

http://www.baidu.com

www.baidu.com/a

www.baidu.com/a/a.a

www.baidu.com/a/

http://www.baidu.com:800/a

www.baidu.com:12

Input

第一行為N組測試數據

以下N行,每行一個字符串。

Output

輸出N行,如果是合法網址,輸出

字符串:YES

否則輸出

字符串:NO

Sample Input

2 http://openoj.awaysoft.com:80/JudgeOnline/index.html http://openoj.awaysoft..com:80/JudgeOnline/index.html

Sample Output

http://openoj.awaysoft.com:80/JudgeOnline/index.html:YES http://openoj.awaysoft..com:80/JudgeOnline/index.html:NO
  模擬題,不解釋了,超級惡心,沒有用正則表達式寫,代碼很長,不過效果貌似不錯,判斷時間很短。   代碼如下: #include <stdio.h>#include <stdlib.h>#include <math.h>#include <string.h>bool right( char *p );bool legal( char c ){if( c=='_'|| c== '-'|| c>='a'&& c<= 'z'|| c>= '0'&& c<= '9'|| c>= 'A'&& c<= 'Z' ){return true;}else{return false;}}bool istype( char *p ){int flag= 0;for( char *i= p+ 1; *i!= '\0'; ++i ){if( legal( *i ) ){flag= 1;continue;}else{return false;}}if( flag ){return true;}else{return false; // www.baidu.com/a.}}bool iscom( char *p ) // ??oˉêy2???DDD??D?? {char cpy[10000];memset( cpy, 0, sizeof( cpy ) );strcpy( cpy, p );if( *( cpy+ 4 )!= '/'&& *( cpy+ 4 )!= ':'&& *( cpy+ 4 )!= '\0' ){return false;}*( cpy+ 4 )= '\0';if( strcmp( cpy, ".com" )!= 0&& strcmp( cpy, ".org" )!= 0&& strcmp( cpy, ".net" )!= 0 ){if( *( cpy+ 3 )!= '/'&& *( cpy+ 3 )!= ':'&& *( cpy+ 3 )!= '\0' ){return false;}*( cpy+ 3 )= '\0';if( strcmp( cpy, ".cn" )!= 0 ){return false;}else{return true;}}else{return true;}}bool isfile( char *p, char *last ){if( last&& !iscom( last ) ){return false;}int flag= 0; // ????'/'oóê?·?óD×?·? for( char *i= p+ 1; *i!= '\0'; ++i ){if( legal( *i ) ){flag= 1;continue;}else if( *i== '/' ){if( flag ){return isfile( i, NULL );}else{return false; // www.baidu.com//}}else if( *i== '.' ){if( flag ){return istype( i );}else{return false;}}else{return false;}} return true; // www.baidu.com/ }bool isport( char *p, char *last ){if( last&& !iscom( last ) ){return false;}int flag= 0;for( char *i= p+ 1; *i!= '\0'; ++i ){if( *i>= '0'&& *i<= '9' ){flag= 1;continue;}if( *i== '/' ){if( flag ){return isfile( i, NULL );}else{return false; // www.baidu.com:/a}}else{return false;}}if( flag ){return true;}else{return false;}}bool isbody( char *p, char *last ){int flag= 0;for( char *i= p+ 1; *i!= '\0'; ++i ){if( legal( *i ) ){flag= 1;continue;}else if( *i== '.' ){if( flag ){return isbody( i, p );}else{return false;}}else if( *i== ':' ){return isport( i, p );}else if( *i== '/' ){if( flag ){return isfile( i, p );}else{return false;}}else{return false;}} // ì?3??-?·?μ?÷?é?üò? .xxx ?á?2£???ê±??Dè?D??ê?·??aoó×o???éif( iscom( p ) ){return true;} else{return false;}}bool isfttp( char *url ){char cpy[10000];strcpy( cpy, url );if( *cpy== 'h' ){*( cpy+ 7 )= '\0';if( strcmp( cpy, "http://" )!= 0 ){return false;}else{return isbody( url+ 6, NULL );}}if( *cpy== 'f' ){*( cpy+ 6 )= '\0';if( strcmp( cpy, "ftp://" )!= 0 ){return false;}else{return isbody( url+ 5, NULL );}}}bool yes( char *url ){if( *url=='h'|| *url== 'f' ){return isfttp( url );}else if( legal( *url ) ){return isbody( url- 1, NULL );}else{return false;}}int main( ){char url[10000];int T;scanf( "%d", &T );while( T-- ){scanf( "%s", url );printf( yes( url )? "%s:YES\n": "%s:NO\n", url );}return 0;}

轉載于:https://www.cnblogs.com/Lyush/archive/2011/08/01/2124334.html

總結

以上是生活随笔為你收集整理的HUT-1556 网址的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。