題目:大意是在說給定一個ipv6地址的簡記形式,讓你給它補全輸出。
簡記的規則大致是把地址中的一部分0去掉,其中還包括一連串的0,此時可用::來代替。
方法:首先記錄給定的字符串中的:的個數,讓後就能確定::中間要補全的0000的個數,然後對於每個小地址(例如bfd),補全失去的0就好了,這時候可以使用printf輸出補0的功能,即:printf("%04s",s);
注意:本來每個字符串中:的個數是不能超過7個的,但是會出現::連用,就可能出現8個,這樣對於計算::之間補全0000的個數計算就會造成困難,所以要單獨處理。
代碼:
#include#include #include using namespace std; int main() { int n; cin>>n; while(n--) { char s[100]; char t[5]; memset(t,0,sizeof(t)); cin>>s; int len=strlen(s),k=0 ; int ans=0,tt=0; for(int i=0; i