In formal language theory and computer science, a substring is a contiguous sequence of characters within a string. For instance, "the best of" is a substring of "It was the best of times". In contrast, "Itwastimes" is a subsequence of "It was the best of times", but not a substring.
Prefixes and suffixes are special cases of substrings. A prefix of a string
S
S
S
S
S
The substrings of the string "apple" would be:"a", "ap", "app", "appl", "apple","p", "pp", "ppl", "pple","pl", "ple","l", "le""e", "" (note the empty string at the end).
A string
u
t
p
s
t=pus
Example: The string
u=
ana
is equal to substrings (and subsequences) of t=
banana
at two different offsets:banana ||||| ana|| ||| ana
The first occurrence is obtained with
p=
b
and s=
na
, while the second occurrence is obtained with p=
ban
and s
A substring of a string is a prefix of a suffix of the string, and equivalently a suffix of a prefix; for example, nan
is a prefix of nana
, which is in turn a suffix of banana
. If
u
t
A string
p
t
s
t=ps
Example: The string ban
is equal to a prefix (and substring and subsequence) of the string banana
:
banana ||| ban
The square subset symbol is sometimes used to indicate a prefix, so that
p\sqsubseteqt
p
t
A string
s
t
p
t=ps
Example: The string nana
is equal to a suffix (and substring and subsequence) of the string banana
:
banana |||| nana
A suffix tree for a string is a trie data structure that represents all of its suffixes. Suffix trees have large numbers of applications in string algorithms. The suffix array is a simplified version of this data structure that lists the start positions of the suffixes in alphabetically sorted order; it has many of the same applications.
A border is suffix and prefix of the same string, e.g. "bab" is a border of "babab" (and also of "baboon eating a kebab").
A superstring of a finite set
P
P
bcclabccefab
P=\{abcc,efab,bccla\}
efabccla
P
P
A string that contains every possible permutation of a specified character set is called a superpermutation.