题目:大意是在说给定一个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