缘由2019北京海淀(小学)选拔 义卖(sale)_编程语言-CSDN问答
不调用系统函数,自己写实现;不开数组,直接输入字符串;判断处理大小写、空格、结尾,主循环O(N),完全匹配查找字符串数量,若用数组存储位置下标,可迅速定位。
实现方法:第一字符匹配后,启动完全匹配配对循环,到结束或空格的处理;若第一字符不匹配则主循环到空格布尔状态切换或结束止。

cpp
void 查找指定字符串首位置与数量不区分大小写完整匹配()
{
std::string a = "to be or not to be is a question Ottoman TO TOTO to", c = "To";
//std::cin >> c >> a;
int n = 0, d = 0, x = 0, j = 0, s = 0;
bool k = 1;
js:if (a[x] != '\0')
{
if (k && (a[x + j] == c[j] || abs(a[x + j] - c[j])==32))
{
if (c[j] != '\0')
++j;
else if (a[x + j] == ' ' || a[x + j] == '\0')
{
if (++d == 1)
s = x;
x += j, j = 0;
if (a[x + j] == ' ')++x;
}
else
;
}
else
{
j = k = 0;
++x;
if (a[x] == ' ')
k = 1, ++x;
}
goto js;
}
if(d)std::cout << d << " " << s << "\n";
else std::cout << "-1\n";
}
