C ++中两个字符串的最大合并
让我们假设我们有两个字符串“ a”和“ b”以及一个字符串“ merge”。任务是用“ a”和“ b”中的字符填充字符串“ merge”,
如果字符串“ a”非空,则从字符串“ a”中删除第一个字符,然后将其复制到字符串“ merge”中。
如果字符串“ b”为非空,则从字符串“ b”中删除第一个字符,然后将其复制到字符串“ merge”中。
如果字符串“ a”和“ b”非空,则从字符串“ a”中删除第一个字符并将其复制到字符串“ merge”中,然后从字符串“ b”中删除第一个字符(如果有)并复制它进入字符串“合并”。
从字典顺序上删除两个字符串中的字符,这意味着,如果字符串“ a”大于字符串“ b”,则从字符串“ a”中删除字符,然后从字符串“ b”中删除。
返回字符串“合并”。
例如
输入1
a =“ bacaa”
b =“ abcaa”
输出: babcacaaaa
说明: 由于给定的字符串“ a”在字典上大于字符串“ b”,因此我们将从字符串“ a”(即“ b”)中提取第一个字符,然后从字符串“ b”中提取。提取后,字符串将为“ babcacaaaa”。
解决这个问题的方法
解决此问题的递归方法是,我们将提取字符串'a'和字符串'b'的每个字符,并检查字符串'a'的字符在字典上是否大于其他字符串,最后连接到字符串'merge' 。
我们将在多个位置后找到每个字符的子字符串,如果在字典上大于另一个字符串,则将其合并为“合并”。
取两个输入字符串“ a”和“ b”。
递归字符串函数concatenateLargest(string a, string b)将两个字符串作为输入,并在串联后返回最大字符串,即(字符串'a'+字符串'b')。
如果两个字符串均为空,则返回字符串'a'+字符串'b'。
如果字符串“ a”小于或等于字符串“ b”,则提取第一个字符并为其他字符递归调用该函数。
如果字符串“ b”小于或等于字符串“ b”,则提取第一个字符并为其他字符递归调用该函数。
返回串联的字符串。
示例
#include <bits/stdc++.h>using namespace std;
string concatenateLargest(string a, string b) {
if (a.size() == 0 or b.size() == 0) {
return (a + b);
}
if (a <= b)
return b[0] + concatenateLargest(a, b.substr(1));
else
return a[0] + concatenateLargest(a.substr(1), b);
}
int main() {
string a = "bacaa";
string b = "abcaa";
cout << concatenateLargest(a, b) << endl;
return 0;
}
运行上面的代码将生成如下输出:
输出结果
bacabcaaaa
根据给定的问题合并后,两个字符串“ bacaa”和“ abcaa”将变为“ bacabcaaaa”。
以上是 C ++中两个字符串的最大合并 的全部内容, 来源链接: utcz.com/z/329755.html