背景是有两个字符串 s1 和 s2, 要找到 s2 中的每个字符第一次出现在 s1 中的位置
方法一:
int i = 0;for (int j = 0; j < s2.size(); j ++ ){ while (s1[i] != s2[j]) i ++ ; cout << i << '\n';}
方法二:
int i = -1;for (int j = 0; j < s2.size(); j ++ ){ while (s1[++ i] != s2[j]) ; cout << i << '\n';}
它们的最大不同之处在于==如果s2中有两个连续的相同的字符,方法一会把这两个字符映射到s1中的同一个位置,方法二会把这两个字符映射到s1中的前后两个位置==
举个栗子
s1 = aaaaa
s2 = aa
根据方法一,s2 的第一个 a 对应 s1 的第一个 a, s2 的第二个 a 也对应 s1 的第一个 a
根据方法二,s2 的第一个 a ...