删除最后一个子字符串
Delete the last substring
我有一个任务。有 2 个字符串:S 和 S。我需要删除 S 的最后一个子字符串,这与 s 相同。为
S = [123 234 789 123]
s = [123]
result = [123 234 789]
#include <iostream>
#include <string>
int main() {
std::string S = "123xyzxyz1234";
std::string s = "123";
// The last instance of s starts from index p of S
auto p = S.rfind(s);
auto tail = S.substr(p + s.length());
if (p != std::string::npos) {
S.resize(p);
S += tail;
}
std::cout << "S = " << S << std::endl;
}
if
声明防范not found
案件。
由于显示的代码独立于任何实现细节,因此我将简要概述如何执行此操作。
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;
上面的代码中可能存在一个错误,可能需要进行一些安全检查。但我把它留给你。
如果第二个子字符串中的字符在子字符串的最后一部分之前没有再次重复,这将起作用:
std::string S ="123234789123";
std::string s="123";
auto it= S.find_last_of(s[0]);
std::cout<<S.substr(0,it);
#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;
}
相关文章:
- 获取用C/C++打印的最后一个字符串
- std::字符串擦除以删除最后一个字母
- 如何检查字符串中的最后一个字符是否是某个字符并将其从字符串中删除?(C++)
- 为什么 for 循环只接受这个简单代码中的最后一个字符串?
- "如何使用C++将字符串的第一个和最后一个索引返回到向量中?
- std::getline 读取最后一个字符串两次
- 忽略set_difference向量向量中的最后一个字符串
- 在C 字符串中,为什么在最后一个字符之后,通过索引和()访问索引时行为是不同的
- 如何确定文本中的最后一个字符串值
- 如何查看复杂度为 O(1) 的字符串流对象中的最后一个字符
- COUT:最后一个字符串覆盖第一个字符串
- 将指针分配给字符串对象的第一个也是最后一个索引
- 如何在C 中获得字符串的最后一个字符
- 在字符串中找到最后一个单词
- 从字符串中删除字符的第一个和最后一个实例
- 删除文件 C++ 中字符串中最后一个出现的字符
- 如何在C++中删除 UTF-8 字符串的最后一个字符
- 如何将文本(诗歌)拆分为行(字符串/字符[])并查找每个行的最后一个单词
- 如何获取用"::"分隔的标记化字符串中的最后一个元素C++?
- 输出字符串使用 C++ 覆盖 Linux 终端上的最后一个字符串