faqts : Computers : Programming : Languages : Tse : String

+ Search
Add Entry AlertManage Folder Edit Entry Add page to http://del.icio.us/
Did You Find This Entry Useful?

0 of 1 people (0%) answered Yes
Recently 0 of 1 people (0%) answered Yes

Entry

TSE: String: Check: How to check if all single characters are unique in a string?

Nov 7th, 2006 16:30
Knud van Eeden,


----------------------------------------------------------------------
--- Knud van Eeden --- 08 November 2006 - 01:25 am -------------------

TSE: String: Check: How to check if all single characters are unique 
in a string?

---

Method: Use counting of the single characters. Only 1 should be found 
each time.

You take one after one each character of the given (sorted or not
sorted) string and search then in the given string if you find exactly 
1
occurrence of this character.
If all characters are occur only once then the given string contains
only unique characters.

===

--- cut here: begin --------------------------------------------------

// library: string: get: count (filenamemacro=getstgco.s) [kn, ri, we, 
08-11-2006 01:15:00]

INTEGER PROC FNStringGetCountI( STRING containS, STRING searchS )
 INTEGER I = 1 - 1
 INTEGER countI = 1 - 1
 INTEGER foundB = FALSE
 INTEGER beginI = 1
 INTEGER endI = Length( containS )
 INTEGER lengthSearchI = Length( searchS )
 REPEAT
  I = Pos( searchS, containS[beginI..endI] )
  foundB = ( I > 0 )
  IF foundB
   countI = countI + 1
   beginI = beginI + I + lengthSearchI - 1
  ENDIF
 UNTIL NOT foundB
 RETURN( countI )
END

INTEGER PROC FNStringCheckCharacterUniqueAllB( STRING s )

 INTEGER I = 0
 INTEGER lengthI = Length( s )
 INTEGER duplicateB = FALSE
 INTEGER countI = 0
 STRING cS[255] = ""
 I = 1 - 1
 REPEAT
  I = I + 1
  cS = SubStr( s, I, 1 )
  countI = FNStringGetCountI( s, cS )
  duplicateB = ( NOT ( countI == 1 ) )
 UNTIL ( duplicateB ) OR ( I >= lengthI )
 RETURN( NOT duplicateB )
END

PROC Main()

 Message( FNStringCheckCharacterUniqueAllB( "ABC" ) ) // gives TRUE 
because all characters occur exactly once

 Message( FNStringCheckCharacterUniqueAllB( "ABBC" ) ) // gives FALSE 
because the B occurs 2 times

END

<F12> Main()

--- cut here: end ----------------------------------------------------

===

Internet: see also:

---


----------------------------------------------------------------------