标签:
按照指定规则对输入的字符串进行处理。 详细描述: 将输入的两个字符串合并。 对合并后的字符串进行排序,要求为:下标为奇数的字符和下标为偶数的字符分别从小到大排序。这里的下标意思是字符在字符串中的位置。 对排训后的字符串进行操作,如果字符为‘0’——‘9’或者‘A’——‘F’或者‘a’——‘f’,则对他们所代表的16进制的数进行BIT倒序的操作,并转换为相应的大写字符。如字符为‘4’,为0100b,则翻转后为0010b,也就是2。转换后的字符为‘2’; 如字符为‘7’,为0111b,则翻转后为1110b,也就是e。转换后的字符为大写‘E’。
举例:输入str1为"dec",str2为"fab",合并为“decfab”,分别对“dca”和“efb”进行排序,排序后为“abcedf”,转换后为“5D37BF” 接口设计及说明: /* 功能:字符串处理 输入:两个字符串,需要异常处理 输出:合并处理后的字符串,具体要求参考文档 返回:无 */ void ProcessString(char* str1,char *str2,char * strOutput) { }
|
|
知识点 | 字符串,排序,位运算 |
---|---|
运行时间限制 | 10M |
内存限制 | 128 |
输入 |
输入两个字符串 |
输出 |
输出转化后的结果 |
样例输入 | dec fab |
样例输出 | 5D37BF |
1 #include<iostream> 2 #include<string> 3 using namespace std; 4 5 char daoxu(char ch) 6 { 7 if((ch>=‘0‘&&ch<=‘9‘)||(ch>=‘A‘&&ch<=‘F‘)||(ch>=‘a‘&&ch<=‘f‘)) 8 { 9 if(ch>=‘0‘&&ch<=‘9‘) 10 { 11 switch(ch) 12 { 13 case ‘0‘: 14 return ‘0‘; 15 case ‘1‘: 16 return ‘8‘; 17 case ‘2‘: 18 return ‘4‘; 19 case ‘3‘: 20 return ‘C‘; 21 case ‘4‘: 22 return ‘2‘; 23 case ‘5‘: 24 return ‘A‘; 25 case ‘6‘: 26 return ‘6‘; 27 case ‘7‘: 28 return ‘E‘; 29 case ‘8‘: 30 return ‘1‘; 31 case ‘9‘: 32 return ‘9‘; 33 } 34 } 35 if(ch>=‘A‘&&ch<=‘F‘) 36 { 37 switch(ch) 38 { 39 case ‘A‘: 40 return ‘5‘; 41 case ‘B‘: 42 return ‘D‘; 43 case ‘C‘: 44 return ‘3‘; 45 case ‘D‘: 46 return ‘B‘; 47 case ‘E‘: 48 return ‘7‘; 49 case ‘F‘: 50 return ‘F‘; 51 } 52 } 53 if(ch>=‘a‘&&ch<=‘f‘) 54 { 55 switch(ch) 56 { 57 case ‘a‘: 58 return ‘5‘; 59 case ‘b‘: 60 return ‘D‘; 61 case ‘c‘: 62 return ‘3‘; 63 case ‘d‘: 64 return ‘B‘; 65 case ‘e‘: 66 return ‘7‘; 67 case ‘f‘: 68 return ‘F‘; 69 } 70 } 71 } 72 else 73 return ch; 74 } 75 76 void paixu(string& str) 77 { 78 int len=str.size(); 79 if(len==1) 80 return ; 81 for(int i=0;i<len-1;i++) 82 for(int j=i+1;j<len;j++) 83 if(str[i]>str[j]) 84 { 85 char temp=str[i]; 86 str[i]=str[j]; 87 str[j]=temp; 88 } 89 return; 90 } 91 92 string ProcessString1(string& str) 93 { 94 int i=0; 95 string str1=str; 96 97 if(str1.empty()) 98 return str1; 99 100 int len=str1.size(); 101 102 if(len==1) 103 { 104 str1[0]=daoxu(str1[0]); 105 return str1; 106 } 107 108 if(len==2) 109 { 110 str1[0]=daoxu(str1[0]); 111 str1[1]=daoxu(str1[1]); 112 return str1; 113 } 114 115 string str2,str3; 116 for(int i=0;i<len;i+=2) 117 str2.push_back(str1[i]); 118 paixu(str2); 119 for(int i=1;i<len;i+=2) 120 str3.push_back(str1[i]); 121 paixu(str3); 122 123 if(len%2==0) 124 { 125 str1.clear(); 126 int len_str2=str2.size(); 127 for(int i=0;i<len_str2;i++) 128 { 129 str1.push_back(str2[i]); 130 str1.push_back(str3[i]); 131 } 132 } 133 134 if(len%2!=0) 135 { 136 str1.clear(); 137 int len_str3=str3.size(); 138 for(int i=0;i<len_str3;i++) 139 { 140 str1.push_back(str2[i]); 141 str1.push_back(str3[i]); 142 } 143 str1.push_back(str2[str2.size()-1]); 144 } 145 146 for(int i=0;i<len;i++) 147 str1[i]=daoxu(str1[i]); 148 return str1; 149 } 150 151 int main() 152 { 153 string s; 154 getline(cin,s); 155 int i; 156 int len_s=s.size(); 157 for(i=0;i<len_s;i++) 158 { 159 if(s[i]==‘ ‘) 160 break; 161 } 162 163 for(int j=i;j<len_s-1;j++) 164 s[j]=s[j+1]; 165 166 string str; 167 for(int i=0;i<len_s-1;i++) 168 str.push_back(s[i]); 169 170 str=ProcessString1(str); 171 cout<<str<<endl; 172 173 system("pause"); 174 }
标签:
原文地址:http://www.cnblogs.com/yanliang12138/p/4722551.html