ONE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT or NINE.
For example:
• BOUNCE and ANNOUNCE are digit words, since they contain the digit ONE.
• ENCODE is not a digit word, even though it contains an O, N and E, since they are not in order.
Here's my code on Delphi
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; Memo1: TMemo; procedure proses; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; digit,cdigit:array[1..9] of string; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin memo1.Text:=''; digit[1]:='one'; digit[2]:='two'; digit[3]:='three'; digit[4]:='four'; digit[5]:='five'; digit[6]:='six'; digit[7]:='seven'; digit[8]:='eight'; digit[9]:='nine'; end; procedure tform1.proses; var s:string; i,j,k,n:integer; c:array[1..9]of integer; ck:array[1..9]of boolean; begin memo1.Text:=''; s:=edit1.Text; memo1.Lines.Append(s); memo1.Lines.Append(''); n:=length(s); for i:=1 to 9 do begin cdigit[i]:=''; c[i]:=1; ck[i]:=true; end; //looking for char for i:=1 to 9 do begin for j:=1 to length(digit[i]) do begin if ck[i]=true then begin ck[i]:=false; for k:=c[i] to n do begin if s[k]=digit[i][j] then begin ck[i]:=true; cdigit[i]:=cdigit[i]+s[k]; c[i]:=c[i]+1; break; end; end; end; end; end; //compare for i:=1 to 9 do begin memo1.Lines.Append(cdigit[i]); end; end; procedure TForm1.Button1Click(Sender: TObject); begin proses; end; end.