字符串合并处理

今天是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 }

大家要学习的话就看参考代码吧,我就是稍微改写了一下排序,就想着锻炼一下,所以自己写了一个更挫的代码

posted @ 2018-07-02 16:46  清浅...忆回  阅读(162)  评论(0编辑  收藏  举报