Add implementations for Exponentiation, Fibonacci, Quicksort, CrossTotal, Palindrome, and RomanNumber classes

This commit is contained in:
Dominik 2025-02-27 11:43:35 +01:00
parent beda36149d
commit 5f7a036bad
6 changed files with 174 additions and 0 deletions

View file

@ -0,0 +1,16 @@
package de.dhbwka.java.exercise.methods;
public class Exponentiation {
public static double xPowerN(double x, int n) {
if (n == 0)
return 1;
if (n > 0)
return x * xPowerN(x, n - 1);
return 1 / xPowerN(x, -n);
}
public static void main(String[] args) {
System.out.println(xPowerN(2, 3));
System.out.println(xPowerN(2, -3));
}
}

View file

@ -0,0 +1,17 @@
package de.dhbwka.java.exercise.methods;
public class Fibonacci {
public static long fib(int n) {
if (n == 0)
return 0;
if (n == 1)
return 1;
return fib(n - 1) + fib(n - 2);
}
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.println(fib(i));
}
}
}

View file

@ -0,0 +1,51 @@
package de.dhbwka.java.exercise.methods;
import java.util.Arrays;
public class Quicksort {
public static void sort(int[] array) {
quicksort(array, 0, array.length - 1);
}
public static void quicksort(int[] array, int left, int right) {
if (left < right) {
int pivot = partition(array, left, right);
quicksort(array, left, pivot - 1);
quicksort(array, pivot + 1, right);
}
}
public static int partition(int[] array, int left, int right) {
int i = left;
int j = right - 1;
int pivot = array[right];
do {
while (array[i] <= pivot && i < right) {
i++;
}
while (array[j] >= pivot && j > left) {
j--;
}
if (i < j) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
} while (i < j);
if (array[i] > pivot) {
int temp = array[i];
array[i] = pivot;
array[right] = temp;
}
return i;
}
public static void main(String[] args) {
int[] array = { 3, 6, 8, 10, 1, 2, 1 };
sort(array);
System.out.print("Sorted array: " + Arrays.toString(array));
}
}

View file

@ -0,0 +1,19 @@
package de.dhbwka.java.exercise.strings;
public class CrossTotal {
public static int crossTotal(String number) {
int sum = 0;
for (int i = 0; i < number.length(); i++) {
char c = number.charAt(i);
if (c >= '0' && c <= '9') {
sum += c - '0';
}
}
return sum;
}
public static void main(String[] args) {
System.out.println(crossTotal("12345"));
System.out.println(crossTotal("1a2b3c4d5e"));
}
}

View file

@ -0,0 +1,23 @@
package de.dhbwka.java.exercise.strings;
public class Palindrome {
public static String reverse(String s) {
String reversed = "";
for (int i = s.length() - 1; i >= 0; i--) {
reversed += s.charAt(i);
}
return reversed;
}
public static boolean isPalindrome(String s) {
return s.equals(reverse(s));
}
public static void main(String[] args) {
System.out.println(isPalindrome("anna"));
System.out.println(isPalindrome("otto"));
System.out.println(isPalindrome("lagerregal"));
System.out.println(isPalindrome("rentner"));
System.out.println(isPalindrome("hallo"));
}
}

View file

@ -0,0 +1,48 @@
package de.dhbwka.java.exercise.strings;
public class RomanNumber {
public static int romanToInt(String roman) {
roman = roman.replaceAll("IV", "IIII").replaceAll("IX", "VIIII").replaceAll("XL", "XXXX").replaceAll("XC", "LXXXX")
.replaceAll("CD", "CCCC").replaceAll("CM", "DCCCC");
int sum = 0;
for (int i = 0; i < roman.length(); i++) {
char c = roman.charAt(i);
switch (c) {
case 'I':
sum += 1;
break;
case 'V':
sum += 5;
break;
case 'X':
sum += 10;
break;
case 'L':
sum += 50;
break;
case 'C':
sum += 100;
break;
case 'D':
sum += 500;
break;
case 'M':
sum += 1000;
break;
}
}
return sum;
}
public static void main(String[] args) {
System.out.println(romanToInt("I"));
System.out.println(romanToInt("II"));
System.out.println(romanToInt("III"));
System.out.println(romanToInt("IV"));
System.out.println(romanToInt("V"));
System.out.println(romanToInt("VI"));
System.out.println(romanToInt("MCMXCIV"));
System.out.println(romanToInt("MMXXI"));
}
}