我有像7X1234 XY1236 NM1235
. 我想使用最后 4 个数字对这个字符串进行排序,只忽略最初的两个字母。另外,我想比较这些数字以查看它们是否是连续的。
我能想到的实现这一点的一种方法是将这些字符串在字母和数字之间拆分为 ( 7X and 1234
) 并进行词法转换,将数字字符串转换为 int 并对其进行处理。但是,我怎样才能将字母部分再次与数字部分相关联,即在对数字字符串进行排序和比较时如何在末尾7X
再次添加前缀?1234
C++
简而言之,如果我有7X1234 XY1236 NM1235 BV1238
我需要得到7X1234 NM1235 XY1236 BV1238
我没有详细说明我想知道字符串的数字部分是否是连续的。现在,当我只有像 1234 1236 1235 1238 这样的整数时,我会执行以下操作
std::vector<int> sortedDigits{1234 1235 1236 1238};
int count = 1;
int pos = 0;
std::vector<std::pair<int, int> > myVec;
myVec.push_back(std::make_pair(sortedDigits[pos], count));
for(size_t i = 1; i < sortedDigits.size(); ++i)
{
if(sortedDigits[i] != (sortedDigits[i-1] + 1))
{
count = 1;
myVec.push_back(std::make_pair(sortedDigits[i], count) );
++pos;
}
else
{
sortedDigits[pos].second = ++count;
}
}
所以最后我得到(1234, 3)
了(1238, 1)
我不知道当字符串存在时我怎么能得到这样的东西?