关于 std::string 转化成 1-index 的问题
  • 板块学术版
  • 楼主xiaozhangawa
  • 当前回复6
  • 已保存回复6
  • 发布时间2025/6/24 17:33
  • 上次更新2025/6/25 18:03:59
查看原帖
关于 std::string 转化成 1-index 的问题
906102
xiaozhangawa楼主2025/6/24 17:33

我是一个很喜欢用 1-index 的人,我习惯把 std::string 的最前面加上一个字符来达到 1-index 的效果,但是这会导致一些问题。

考虑如下代码片段:

// 1-index
int m;
string s;
cin>>m>>s;
s += 'a';
for(int i = 1;i <= m-2;i++){
    if(s[i]=='a' && s[i+1]=='b' && s[i+2]=='c'){
        cout<<"Found \"abc\"!";
    }
}
// 0-index
int m;
string s;
cin>>m>>s;
for(int i = 0;i < m-2;i++){
    if(s[i]=='a' && s[i+1]=='b' && s[i+2]=='c'){
        cout<<"Found \"abc\"!";
    }
}

按我的理解,这两个代码片段应该是等价的,但是如果 s 中仅有一个 abc,1-index 的版本就会找不到 abc,而 0-index 的片段则没有任何问题。

有无 dalao 解释是怎么回事?

2025/6/24 17:33
加载中...