O(1) additional memory means "using at most some constant additional memory." For example, you couldn't store a copy of the string, since that would take O(n) space, but you could store any constant number of extra int
s, char
s, etc.
More generally- statements like "O(1)" or "O(n)" don't necessarily refer to runtimes. Big-O notation is a way of describing functions. An algorithm can't be O(n), but its runtime can be O(n). An algorithm's space usage can similarly be O(1), O(n), O(2n), etc.
Hope this helps!