|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object demo.Pnouseva
public class Pnouseva
Palauttaa merkkijonosta pisimmän pelkästään kasvavan (samoja tai aakkosissa aina edeltäjäänsä "suurempia" merkkejä sisältävän) merkkijoukon pituuden.
Algoritmi: ========== Tutkitaan merkkijonon jokaisen merkin kohdalta, kuinka pitkä jono siitä eteenpäin on kasvavia merkkejä ja palutetaan pisimmän löytyneen kasvavan jonon pituus. 0. Mennään jonon alkuun. 1. Jos ollaan lopussa palautetaan pisimmän löytyneen kasvavan jonon pituus ja lopetetaan. 2. Tutkitaan kuinka pitkä kasvava jono alkaa kohdalla olevasta merkistä. 3. Jos kasvava jono on pitempi kuin tähänastinen pisin, niin merkataan tämä pisimmäksi. 4. Mennään siihen merkkiin, johon edellinen kasvava jono päättyi ja jatketaan kohdasta 1. Syyllinen: Mikko Puhalainen, 18.3.1999 Esim jos 0123456789 abcdabcdea kohdasta 0 kysytään nousevan pituutta saadaan 4. Jos kohdasta 1 kysytään nousevan pituutta, saadaan 3, kohdasta 2=>2, 3=1. Vasta kohdasta 4 alkaen voi tulos jälleen parantua. Eli siksi loikan pituus kannattaa olla nousevan pituus Vielä vähän voisi optimoida lopettamalla haku jo ennen jonon päättymistä, jos nykyistä ennätystä ei voi parantaa. Huomautti Vesa Lappalainen 19.3.1998
Constructor Summary | |
---|---|
Pnouseva()
|
Method Summary | |
---|---|
static void |
main(java.lang.String[] args)
Testataan pisinNouseva-aliohjelmaa |
static int |
nouseva(java.lang.String jono,
int alku)
Etsitään kuinka monta peräkkäistä "nousevaa" merkkiä on alkaen paikasta alku. |
static int |
pisinNouseva(java.lang.String jono)
Etsitään pisimmän nousevan osajonon pituus merkkijonosta |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public Pnouseva()
Method Detail |
---|
public static int nouseva(java.lang.String jono, int alku)
jono
- merkkijonojota tutkitaanalku
- paikka josta aloitetaan
nouseva("",0) === 1; nouseva("a",0) === 1; nouseva("aa",0) === 2; nouseva("aab",0) === 3; nouseva("bab",0) === 1; // NOPMD nouseva("bab",1) === 2; nouseva("bab",2) === 1; nouseva("bab",3) === 1;
public static int pisinNouseva(java.lang.String jono)
jono
- tutkittava merkkijono
pisinNouseva("abajiuxc") === 3; pisinNouseva("kissa") === 3; pisinNouseva("abcdefg") === 7; pisinNouseva("dcba") === 1; pisinNouseva("ab") === 2; pisinNouseva("a") === 1; pisinNouseva("") === 0;
public static void main(java.lang.String[] args)
args
- ei käytössä
|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |