华为实习机试第二题20180704

输入一组字符串,其中英文逗号作为分割,分割后的每个字符串的最后一位字符【陷阱,不一定是数字】为队列入栈的优先级,ASCII码越大,优先级越高,相同优先级按输入顺序排序。


输入:一个长度不超过1000的字符

A1,B2,C3,a9,d0【陷阱:最后一位不一定是数字,每个字符串也不一定只有两个字符】

输出:按照优先级输出出栈的字符串,以英文逗号作为分割

a9,C3,B2,A1,d0

运行结果:华为实习机试第二题20180704_第1张图片

#include
#include
#include
#include
using namespace std;

struct node{
	char data;
	string sa;
}Nodes[1000];


int main()
{
	string str;
	int te;
	int len,i;
	int st,js;
	
	while(cin>>str){
		str+=',' ;
		len = str.length();
		int re[1000]={0};//记录逗号 
		int cnt1 = 0;
		 
		//找切割点 
		re[cnt1]=-1;
		cnt1++;
		for(i=0;i			if(str[i]==','){
				re[cnt1]=i;
				cnt1++;
			}
		}
		re[cnt1]=len;
		
		int cnt = 0;
		for(i=0;i			if(str[i]==','){
				Nodes[cnt].data = str[i-1]; //最后一位字符,不一定是数字 
				//找多个字符 
				for(int j = re[cnt]+1;j					Nodes[cnt].sa += str[j];  				
				}
				cnt++;
			}
		}
		//找最大值	
		int index;
		for(i=0;i			char max='/';
			for(int j =0;j				if(Nodes[j].data!='+' && Nodes[j].data>max){
					max = Nodes[j].data;
					index = j;
				}
			}
			//打印
			cout<			if(i!=cnt-1){
				printf(",");
			}
			Nodes[index].data = '+';	 
				for(i=0;i<100;i++){
			Nodes[i].sa.clear();
		}
		printf("\n");
	}
	return 0;
}

你可能感兴趣的:(华为实习机试第二题20180704)