将两个无序的字符串合并成一个有序字符串
发布网友
发布时间:2022-04-12 12:06
我来回答
共3个回答
热心网友
时间:2022-04-12 13:36
string s1 = "fdsahg";
string s2 = "trewq";
//用来存储打碎后的字符串.
var str = new ArrayList();
//将无序的字符加入数组中
for (int ii = 0; ii < (s1.Length > s2.Length ? s1.Length : s2.Length); ii++)
{
if (ii < s1.Length) str.Add(s1.Substring(ii, 1));
if (ii < s2.Length) str.Add(s2.Substring(ii, 1));
}
string newStr = "";
//将排序后的数组重组为字符串
foreach (string _str in str.ToArray().OrderBy(i => i)) {
newStr += _str;
}
-----------------------------------------------------
要WEBFORM的还是WINFORM的.还是控件台程序就行?
给你个WEBFORM的吧.
ASPX:
<body>
<form id="form1" runat="server">
<div>
<input type="text" runat="server" id="txt1" />
<br />
<input type="text" runat="server" id="txt2" />
<br />
<asp:Button ID="btnStart" runat="server" Text="Start" onclick="btnStart_Click" />
<div id="div_result" runat="server"></div>
</div>
</form>
</body>
ASPX.CS:
protected void btnStart_Click(object sender, EventArgs e)
{
this.div_result.InnerHtml = "Result:"+this.getOrderby(this.txt1.Value.Trim(), this.txt2.Value.Trim());
}
private string getOrderby(string s1, string s2) {
//用来存储打碎后的字符串.
var str = new System.Collections.ArrayList();
//将无序的字符加入数组中
for (int ii = 0; ii < (s1.Length > s2.Length ? s1.Length : s2.Length); ii++)
{
if (ii < s1.Length) str.Add(s1.Substring(ii, 1));
if (ii < s2.Length) str.Add(s2.Substring(ii, 1));
}
string newStr = "";
//将排序后的数组重组为字符串
foreach (string _str in str.ToArray().OrderBy(i => i))
{
newStr += _str;
}
return newStr;
}
热心网友
时间:2022-04-12 14:54
方法有好几种,但是都编出来比较麻烦,我直接说说思路吧:第(1)种可以把两个无序字符串先合并成一个字符串,再排序。第二种是把两个字符串分别排成有序的,然后把其中一个按递增顺序逐个添加到另一个里面,就ok了。
是不是一定要源代码?今天也没时间了
热心网友
时间:2022-04-12 16:28
std::string merge_string(const std::string& first,const std::string& second)
{
std::string f(first);
std::sort(f.begin(),f.end());
std::string s(second);
std::sort(s.begin(),s.end());
std::string result(f.size() + s.size() + 1, '\0');
std::set_union(f.begin(),f.end(),s.begin(),s.end(),result.begin());
return result;
}