SHOW:
|
|
- or go back to the newest paste.
| 1 | // Author : Saurav Kalsoor | |
| 2 | - | // Reduce String - JAVA |
| 2 | + | // Transform String - JAVA |
| 3 | ||
| 4 | import java.util.*; | |
| 5 | ||
| 6 | public class Test {
| |
| 7 | ||
| 8 | static Scanner sc = new Scanner(System.in); | |
| 9 | public static void main(String[] args) {
| |
| 10 | - | String n = sc.next(); |
| 10 | + | String str = sc.next(); |
| 11 | - | System.out.println(reduceString(n)); |
| 11 | + | System.out.println(transformString(str)); |
| 12 | ||
| 13 | } | |
| 14 | ||
| 15 | - | public static String reduceString(String originalString){
|
| 15 | + | public static String transformString(String str){
|
| 16 | - | if(originalString.length() <= 2) return originalString; |
| 16 | + | if(str.length() == 2) return str; |
| 17 | ||
| 18 | - | String newString = ""; |
| 18 | + | int n = str.length(); |
| 19 | - | originalString = recurse(originalString, newString); |
| 19 | + | String newStr = ""; |
| 20 | - | return reduceString(originalString); |
| 20 | + | for(int i = 0; i < n; i += 2){
|
| 21 | if(i == n - 1){
| |
| 22 | newStr += str.charAt(i); | |
| 23 | - | public static String recurse(String oldString, String newString){
|
| 23 | + | }else{
|
| 24 | - | if(oldString.isEmpty()) return newString; |
| 24 | + | newStr += getAverage(str.charAt(i), str.charAt(i + 1)); |
| 25 | } | |
| 26 | - | int n = oldString.length(); |
| 26 | + | |
| 27 | - | if(n == 1){
|
| 27 | + | return transformString(newStr); |
| 28 | - | return newString + oldString; |
| 28 | + | |
| 29 | ||
| 30 | public static char getAverage(char a, char b){
| |
| 31 | - | int first = oldString.charAt(0) - '0', last = oldString.charAt(n-1) - '0'; |
| 31 | + | int avg = ((a - 'a') + (b - 'a'))/2; |
| 32 | - | int sum = first + last; |
| 32 | + | return (char)(avg + 'a'); |
| 33 | } | |
| 34 | - | oldString = oldString.substring(1, n - 1); |
| 34 | + | |
| 35 | - | newString += Integer.toString(sum); |
| 35 | + | |
| 36 | - | return recurse(oldString, newString); |
| 36 | + |