Cześć wszystkim,
zrobiłem sobie proste zadanko ze spoja http://pl.spoj.pl/problems/KC010/ i wydaje się że wszystko gra.
ostatnio nie miałem czasu na programowanie więc może się trochę cofnąłem.
Mam prośbę powiedzcie co można by tu zmienić, poprawić, zrobić inaczej?
No i nie wiem czy słowo "ba4la" ma być liczone jak słowo i czy wyciągać z niego cyfrę.
import java.util.StringTokenizer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class LiczbySlowa {
public static void main(String[] args) {
String zdanie = "Ala ma 224 4 koty i 3 psy bla ba4la";
System.out.println(zdanie);
System.out.println(liczby(zdanie));
System.out.println(slowa(zdanie));
System.out.print(policzLiczby(zdanie)+" ");
System.out.println(policzSlowa(zdanie));
}
static StringBuilder sameLiczby = new StringBuilder();
static StringBuilder sameSlowa = new StringBuilder();
static String liczby(String zdanie)
{
for (int i = 0; i < zdanie.length(); i++) {
if (Character.isDigit(zdanie.charAt(i))) {
sameLiczby.append(zdanie.charAt(i));
}
}
return sameLiczby.toString();
}
static String slowa(String zdanie)
{
String wynik = null;
Pattern p = Pattern.compile(" [0-9]+");
Matcher m = p.matcher(zdanie);
wynik = m.replaceAll("");
return wynik;
}
static int policzLiczby(String zdanie)
{
int a = 0;
for (int i = 0; i < sameLiczby.length(); i++) {
a++;
}return a;
}
static int policzSlowa(String zdanie)
{
StringTokenizer tok = new StringTokenizer(slowa(zdanie));
return tok.countTokens();
}
}
Output:
Ala ma 224 4 koty i 3 psy bla ba4la
224434
Ala ma koty i psy bla ba4la
6 7