字符串合并处理
今天是2018/7/2 老师上课要求我们做的一道题目——click here
我的代码:
1 #include<iostream> 2 #include<string> 3 using namespace std; 4 const string helper1 = "0123456789abcdefABCDEF"; 5 const string helper2 = "084C2A6E195D3B7F5D3B7F"; 6 void change(string &s,int i,int j) 7 { 8 string item=s; 9 s[i]=item[j]; 10 s[j]=item[i]; 11 } 12 int main() 13 { 14 string s1,s2,s; 15 while(cin >> s1 >> s2) 16 { 17 s = s1 + s2; 18 for(int i=0;i<s.length();i+=2) 19 { 20 for(int j=i+2;j<s.length();j+=2) 21 { 22 if(s[i]>s[j]) 23 { 24 change(s,i,j); 25 } 26 } 27 } 28 for(int i=1;i<s.length();i+=2) 29 { 30 for(int j=i+2;j<s.length();j+=2) 31 { 32 if(s[i]>s[j]) 33 { 34 change(s,i,j); 35 } 36 } 37 } 38 for(int i = 0;i < s.length();i++) 39 { 40 int n = helper1.find(s[i]); 41 if(n != -1) 42 s[i] = helper2[n]; 43 } 44 cout << s << endl; 45 } 46 return 0; 47 }
亮点在helper1和helper2的定义
我承认我是参考的,参考代码:
1 #include<iostream> 2 #include<string> 3 #include<algorithm> 4 using namespace std; 5 const string helper1 = "0123456789abcdefABCDEF"; 6 const string helper2 = "084C2A6E195D3B7F5D3B7F"; 7 int main() 8 { 9 string s1,s2,s; 10 while(cin >> s1 >> s2) 11 { 12 s = s1 + s2; 13 string str1,str2,str; 14 for(int i = 0;i < s.length();i++) 15 { 16 if(i % 2 == 0) 17 str1 += s[i]; 18 else 19 str2 += s[i]; 20 } 21 sort(str1.begin(),str1.end()); 22 sort(str2.begin(),str2.end()); 23 for(int i = 0;i < s.length();i++) 24 { 25 if(i % 2 == 0) 26 str += str1[i/2]; 27 else 28 str += str2[i/2]; 29 } 30 for(int i = 0;i < str.length();i++) 31 { 32 int n = helper1.find(str[i]); 33 if(n != -1) 34 str[i] = helper2[n]; 35 } 36 cout << str << endl; 37 } 38 getchar(); 39 return 0; 40 }
大家要学习的话就看参考代码吧,我就是稍微改写了一下排序,就想着锻炼一下,所以自己写了一个更挫的代码