问题描述:
给定一个由字母和空格符构成的字符串a,先随机删除其中的一些空格符,再随机增加一些空格符,变成字符串b。现已知字符串b的一个片段b[i:j],这个片段的首尾皆为字母(非空格符)。请找出该片段在a中相应的片段a[m:n]。例:输入a = 'Hello world', b = 'H e llo w or ld', i = 2, j = 11。输出m =1, n =8。
#include <iostream>
using namespace std;
int main() {
string a = " Hello world";
string b = "H e llo w or ld";
int i = 2, j = 11, m = -1, n = -1;
int idx_a = 0;
for (int k = 0; k < b.size(); ++k) {
if (b[k] == ' ') continue;
while (a[idx_a] == ' ') ++idx_a;
if (b[k] == a[idx_a]) {
if (k == i) {
m = idx_a;
}
if (k == j) {
//cout << b[k] << endl;
n = idx_a;
}
++idx_a;
}
if (m==-1 && n==-1) break;
}
cout << m << '-' << n << endl;
}