How to find the max absolute difference between consecutive characters in a string with Java

2 Answers

0 votes
public class MaxAsciiDiff {

    public static int maxAsciiDiff(String s) {
        if (s.length() < 2) {
            return 0;  // No consecutive characters
        }

        int maxDiff = 0;

        for (int i = 0; i < s.length() - 1; i++) {
            int diff = Math.abs(s.charAt(i) - s.charAt(i + 1));
            if (diff > maxDiff) {
                maxDiff = diff;
            }
        }

        return maxDiff;
    }

    public static void main(String[] args) {
        String s = "jumplings";

        System.out.println("Maximum ASCII difference: " + maxAsciiDiff(s));
    }
}



/*
run:

Maximum ASCII difference: 12

*/

 



answered Jan 9 by avibootz
0 votes
public class MaxAsciiDiff {

    // Helper class to hold the result
    static class Result {
        int diff;
        char c1;
        char c2;

        Result(int diff, char c1, char c2) {
            this.diff = diff;
            this.c1 = c1;
            this.c2 = c2;
        }
    }

    public static Result maxAsciiDiff(String s) {
        if (s.length() < 2) {
            return new Result(0, '\0', '\0');
        }

        int maxDiff = 0;
        char best1 = '\0';
        char best2 = '\0';

        for (int i = 0; i < s.length() - 1; i++) {
            int diff = Math.abs(s.charAt(i) - s.charAt(i + 1));
            if (diff > maxDiff) {
                maxDiff = diff;
                best1 = s.charAt(i);
                best2 = s.charAt(i + 1);
            }
        }

        return new Result(maxDiff, best1, best2);
    }

    public static void main(String[] args) {
        String s = "jumplings";

        Result r = maxAsciiDiff(s);

        System.out.println("Maximum ASCII difference: " + r.diff);
        System.out.println("Characters: '" + r.c1 + "' and '" + r.c2 + "'");
    }
}



/*
run:

Maximum ASCII difference: 12
Characters: 'g' and 's'

*/

 



answered Jan 9 by avibootz
...