4 ms·
So what would result would you return for: 0-based indexOf "" in "abc" 0-based lastIndexOf "" in "abc" ?
by hermitcrab 3y ago
So what would result would you return for:
0-based indexOf "" in "abc"
0-based lastIndexOf "" in "abc"
?
- layer8 3y agoFor the empty string, lastIndexOf would return 3, because the empty string is present at all positions. (When taking the substring (i, i) for any index i, the result is the empty string.) This assumes that the index “after the last character” is considered a valid index for that purpose, which it typically is. (Where can I place the cursor within the delimiters of "abc"? There are four positions where I can place it, 0–3.) Otherwise, 2 would be the last position.
- hermitcrab 3y ago>To further illustrate, it would be the index where, if the search string is removed from the found position, it would have to be inserted in order to revert to the original string. I guess that is a good way to look at it. It would mean: indexof "" in "abca" is 0 indexof "abca" in "" is invalid indexof "" in "" is 0 Which feels unintuitive.
- layer8 3y agoIf you feel that ‘indexof "" in "" is 0’ is unintuitive, consider that indexOf s in s is zero for all strings s (including for the empty string). Similarly, indexOf st in s is invalid for all strings s if t is non-empty, that is if s is a proper prefix of the search string. Your example ‘indexof "abca" in "" is invalid’ is just one case of that (with s = empty string and t = "abca"), completely analogous to ‘indexof "babca" in "b" is invalid’. So I’d say your intuition needs adjusting. ;)
- hermitcrab 3y agoMaybe. ;0) Your approach seems to be consistent. Unfortunately I think it is too complicated to explain to my non-programmer users.