一个简单合并字符串并排序函数

本文介绍了一种将两个字符串合并并进行字符级排序的方法。通过创建新的字符数组,使用双重循环来实现字符之间的比较和排序,最终返回排序后的字符串。这种方法可以用于简单的字符串操作案例。
        public string SumString(string s1, string s2)
        {
            string s = s1 + s2;
            char[] p=new char [s.Length ];
            for (int i = 0; i < s.Length; i++)
            {
                p[i] = s[i];
            }
            char a;
            for (int i = 0; i < s.Length; i++)
            {
                for (int j = 0; j < s.Length; j++)
                {
                    if (p[i] < p[j])
                    {
                        a=p[i];
                        p[i] = p[j];
                        p[j]=a;
                    }
                }
            }
            string ss="";
            for (int i = 0; i < s.Length; i++)
            {
                ss += p[i];
            }
            return ss;
        } 
使用C语言合并字符串排序有多种方法,下面结合参考内容介绍两种常见的方式。 ### 方法一:先拼接再排序 此方法先将两个字符串拼接在一起,然后对拼接后的字符串进行排序。以下是示例代码: ```c #include <stdio.h> #include <string.h> void bin(char str1[ ], char str2[ ]) { strcat(str1,str2); int n = strlen(str1); int i = 0,j = 0; for(i = 0; i < n; i++) { for(j = i + 1; j < n; j++) { if(str1[i] > str1[j]) { char temp; temp = str1[j]; str1[j] = str1[i]; str1[i] = temp; } } } printf("%s",str1); } int main() { char a[100]; char b[100]; scanf("%s", a); scanf("%s", b); bin(a,b); return 0; } ``` 该代码首先在`bin`函数中使用`strcat`函数将`str2`拼接到`str1`后面,接着使用嵌套的`for`循环对拼接后的`str1`进行冒泡排序,最后在`main`函数中读取用户输入的两个字符串调用`bin`函数完成合并排序操作,输出结果[^1]。 ### 方法二:处理重复字符后合并排序 若要处理字符串中可能存在的重复字符,可先删除重复字符,再进行合并排序。示例代码如下: ```c #include <stdio.h> #include <string.h> int main() { char a[50]={'\0'}; char b[50] = { '\0' }; char c[100] = { '\0' }; gets(a); gets(b); int a_l = strlen(a); int b_l = strlen(b); for (int i = 0; i < a_l; i++) { for (int j = 0; j < b_l; j++) { if (a[i] == b[j]) { for (int k = j; k < b_l; k++) { // 挪位,删除重复字符 b[k] = b[k + 1]; } b_l = b_l - 1; } } } for (int i = 0; i < a_l; i++) { c[i] = a[i]; } for (int i = a_l; i < a_l + b_l; i++) { c[i] = b[i-a_l]; } int c_l = strlen(c); int temp; for (int i = 0; i < c_l; i++) { // 排序 for (int j = 0; j < c_l - i - 1; j++) { if (c[j] > c[j+1]) { temp = c[j]; c[j] = c[j + 1]; c[j + 1] = temp; } } } for (int i = 0; i < c_l; i++) { printf("%c", c[i]); } return 0; } ``` 该代码在`main`函数里,首先读取两个字符串`a``b`,接着通过嵌套的`for`循环找出删除`b`中与`a`重复的字符,之后将`a`处理后的`b`合并到`c`中,最后对`c`进行冒泡排序输出结果[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值