删除最后一个子字符串

时间:2015-04-26 18:14:57

标签: c++ string

我有一项任务。有两个字符串:S和s。我需要删除S的最后一个子串,这与s相同。 对于

S = [123 234 789 123]
         s = [123]
    result = [123 234 789]

3 个答案:

答案 0 :(得分:1)

如果第二个子字符串中的任何一个字符都没有在子字符串的最后一部分之前再次重复,那么这将起作用:

   std::string S ="123234789123";
    std::string s="123";
    auto it= S.find_last_of(s[0]);
    std::cout<<S.substr(0,it);

答案 1 :(得分:1)

#include <vector>
#include <algorithm>
#include <string>

using namespace std;

string removeLastSubstr(string S, string s)
{
    reverse(S.begin(), S.end());
    reverse(s.begin(), s.end());

    if (s.find(s) != string::npos)
        S = S.substr(S.find(s) + s.size(), S.size());

    reverse(S.begin(), S.end());
    return S;

}

答案 2 :(得分:-1)

由于显示的代码与任何实现细节无关,因此我将简要介绍如何执行此操作。

string S,s; // I am assuming they contain the right data
int position = S.rfind(s);
string ans1 = S.substr(0, position);
string ans2 = S.substr(position + s.length());
return ans1 + ans2;

上述代码中可能存在一个错误,可能需要进行一些安全检查。但是我把它留给你了。