Tag Archive for hackerrank

Palindrome #1

Det kanske är dags att kolla på Java 8 grejer.

Uppgiften är från hackerrank att beräkna antal ändringar som behövs för att göra ett ord till ett palindrom.

Löst med IntStream

import java.util.stream.IntStream;

int palindromeChanges =
    IntStream.range(0, word.length()/2)
        .map(idx -> Math.abs(
            (char)word.charAt(idx) -
            (char)word.charAt(word.length()-idx-1)
        ))
        .sum();

 

Och vanlig for-loop

int sum = 0;
for(int idx = 0; idx < word.length()/2; idx++) {
    sum += Math.abs(
        (char)word.charAt(idx) -
        (char)word.charAt(word.length()-idx-1)
    );
}

 

Jag vet inte riktigt om jag tycker det är så stor skillnad än så länge… men, hade iaf tillfälle att titta på andra stream() funktioner, som reduce och filter.

Nu är det sovdags!

diagonal difference

Min lösning på hackerrank – diagonal difference

Framförallt nöjd att jag skrev rätt på första försöket (:

import java.io.*;
import java.util.*;

public class Solution {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int N = Integer.parseInt(in.nextLine());
        int sum1 = 0;
        int sum2 = 0;
        
        int c2 = N - 1;
        for(int i = 0; i < N; i++) {
            String[] row = in.nextLine().split(" ");
            int value1 = Integer.parseInt(row[i]);
            sum1 += value1;
            int value2 = Integer.parseInt(row[c2--]);
            sum2 += value2;
        }
        
        System.out.println(Math.abs(sum1-sum2));
    }
}