B1043

自己写的:

#include<bits/stdc++.h>
using namespace std;
int hashtable[10010]={0};
int main(){
	string s;
	cin>>s;
	//第一步:把s存进hashtable中 
	for(int i=0;i<s.length();i++){
		hashtable[s[i]]++;
	}
	//第二步:建立一个数组char str=['p','A','T','e','s','t'],
	//如果hashtable['P','A','T','e','s','t']有一个不为空,就继续输出它,
	//按这个顺序访问,如果没有的话,看下一位
	 char str[6]={'P','A','T','e','s','t'};
	while(hashtable['P']||hashtable['A']||hashtable['T']||hashtable['e']||hashtable['e']||hashtable['s']||hashtable['t']){
	 for(int i=0;i<6;i++){
	 	if(hashtable[str[i]]){
	 		cout<<str[i];
	 		hashtable[str[i]]--;
		 } 
	 }
	}
	return 0;
}

算法笔记的code:

#include<bits/stdc++.h>
using namespace std;
int hashtable[10010]={0};
int main(){
	string s;
	int sum=0;
	char str[6]={'P','A','T','e','s','t'};
	cin>>s;
	//第一步:把符合条件的字符存进hashtable中 
	for(int i=0;i<s.length();i++){
		for(int j=0;j<6;j++)
		if(s[i]==str[j]){
			hashtable[s[i]]++;
			sum++;//要打印的个数;		
		}	
	}
	//第二步:if要打印的sum大于0,继续打印,注意,打印一次需要减一 
	while(sum){
	 for(int i=0;i<6;i++){
	 	if(hashtable[str[i]]){
	 		cout<<str[i];
	 		hashtable[str[i]]--;
		 } 
	 }
	}
	return 0;
}
发布了54 篇原创文章 · 获赞 4 · 访问量 2431

猜你喜欢

转载自blog.csdn.net/tian1191132442/article/details/102855135