#1TLE,求助
查看原帖
#1TLE,求助
1268529
jiangbaolin楼主2024/8/29 11:34
#include<bits/stdc++.h>
using namespace std;
char a[100001],b[100001];
int i,x,y,l,s,mx,le,r;
int main(){
	cin >> a;
	while(i<strlen(a)){
		if(i==0){
			x=i+3;
			while(i<x){
				if(a[i]=='0'){
					a[i]=' ';
				}
				else{
					break;
				}
				i++;
			}
		}
		if(a[i]==':'){
			x=i+4;
			i++;
			while(i<x){
				if(a[i]=='0'){
					a[i]=' ';
				}
				else{
					break;
				}
				i++;
			}
		}
		i++;
	}
	for(i=0;i<strlen(a);i++){
		if(a[i]!=' '){
			b[l]=a[i];
			l++;
		}
	}
	for(i=0;i<strlen(b);i++){
		if((b[i]=='0' && b[i-1]==':' && b[i+1]==':') || (b[i]=='0' && b[i-1]==':' || b[i+1]==':' && (i==0 || i==strlen(b)-1))){
			if(s==0){
				le=i;
			}
			s++;
		}
		if(b[i]!='0' && b[i]!=':'){
			if(s>mx){
				r=i-2;
				mx=s;
			}
			s=0;
		}
		if(i==strlen(b)-1){
			if(s>mx){
				r=i;
				mx=s;
			}
			s=0;
		}
	}
	if(le==0 && r==0){
		cout << b;
		return 0;
	}
	if(b[le-1]==':'){
		le--;
	}
	if(b[r+1]==':'){
		r++;
	}
	for(i=0;i<strlen(b);i++){
		if(i==le){
			cout << "::";
			i=r;
		}
		else{
			cout << b[i];
		}
	}
	return 0;
}
2024/8/29 11:34
加载中...