Re: Deleting substrings



On Thu, 29 Jun 2006 06:12:53 -0700, goose wrote:

Chris Dollin wrote:
goose wrote:


<snipped>


1. We start at the beginning of the string.
abcxyghixy
^

2. We scan from that point for "xy" and if we don't find it
then we are done, if we find it then we are at the following point
in the string:
abcxyghixy
^

3. We copy the characters from the point immediately after
"xy" into the current position:
abcghixy
^

4. We repeat steps 2 and 3 until step 2 tells us that we are done.

Not as a criticism of your solution (I'm just piggybacking), but
I wonder what the OP intends to do with

abcxxyydef

After `delete A from B`, is it allowed for the result to contain A?

Er. Requirements error :-) ?


[If not, then we just need to restart the scan not from where we
left off, but from a "suitable distance" before then.]

<speculation>
Would probably be faster to keep it the same (start off where
we stopped) and wrap *that* into a loop which only ends when
no changes are made in the inner loop rather than repeatedly
starting from the beginning of the haystack[1] again (for
arbitrarily long needles[1] "suitable distance" would initially
mean starting from the beginning) each time we make a change.

<snip>

How about keeping a record of the first occurrence if the first character
of the substring in the host string? Then, if a substring is removed,
scanning is restarted from that position. If there is no record of an
occurrence of that character, or if we've just removed it as a result of
sub-string deletion, we resume where we left off. That should eliminate
redundant scans of the host string.
.



Relevant Pages

  • Re: Deleting substrings
    ... Chris Dollin wrote: ... We start at the beginning of the string. ... no changes are made in the inner loop rather than repeatedly ...
    (comp.programming)
  • [TOMOYO #15 3/8] Common functions for TOMOYO Linux.
    ... This file contains common functions (e.g. policy I/O, pattern matching). ... Since TOMOYO Linux is a name based access control, ... TOMOYO Linux's string manipulation functions make reviewers feel crazy, ... the Linux kernel accepts all characters but NUL character ...
    (Linux-Kernel)
  • RfD: Escaped Strings version 4
    ... the S" string can only contain printable characters, ... the S" string cannot contain the '"' character, ... as an escape character for the entry of characters that cannot be ... \b BS (backspace, ASCII 8) ...
    (comp.lang.forth)
  • RfD: Escaped Strings version 4
    ... the S" string can only contain printable characters, ... the S" string cannot contain the '"' character, ... as an escape character for the entry of characters that cannot be ... \b BS (backspace, ASCII 8) ...
    (comp.lang.forth)
  • Re: RfD: Escaped Strings
    ... the S" string can only contain printable characters, ... the S" string cannot contain the '"' character, ... \b BS (backspace, ASCII 8) ... \ ** escapes to characters much as C does. ...
    (comp.lang.forth)