我的问题是我想返回两个字符串s1,s2的公共子字符串。显然,s1和s2是对称的。
string shortest_common( const string& s1, const string& s2 ) {
}
我想出了这个问题的三种可能的解决方案:
我个人更喜欢第一种情况,因为意图是找到不改变s1或s2的最短公共字符串。所以我的问题是:在这种情况下哪个选项是理想的?
谢谢,
陈
答案 0 :(得分:2)
我会选择使用您显示的签名。如果你找到一个共同的子串,那么你不希望有副作用。当他们打电话给你的功能时,这不是人们想到的。我不希望一个名为“add_two_numbers”的函数修改其中一个数字并返回一个值。
答案 1 :(得分:0)
您可以使用递归来交换参数的含义,而无需以任何方式更改对象本身。
答案 2 :(得分:0)
我对你的实际问题有点困惑,所以我会根据标题判断。
同时执行:
void shortest_common( string& s1, const string& s2 )
{
// real algorithm changing s1
}
inline string shortest_common( string s1, const string& s2 )
{
shortest_common( s1, s2 );
return s1;
}