This approach involves iterating through the string and calculating the absolute difference between each pair of adjacent characters, summing these differences to get the total score for the string.
We can easily access the ASCII value of a character in most programming languages by either using a built-in function or converting the character to an integer type.
Time Complexity: O(n), where n is the length of the string.
Space Complexity: O(1), as no extra space is used apart from a few variables.
1public class ScoreOfString {
2 public static int scoreOfString(String s) {
3 int score = 0;
4 for (int i = 0; i < s.length() - 1; i++) {
5 score += Math.abs(s.charAt(i) - s.charAt(i + 1));
6 }
7 return score;
8 }
9
10 public static void main(String[] args) {
11 String str = "hello";
12 System.out.println("Score: " + scoreOfString(str));
13 }
14}
This Java program defines a method scoreOfString
that calculates the score by iterating through the string and taking the absolute difference between adjacent characters in the string using the Math.abs
method.
This approach involves using recursion to calculate the score of the string. The function will compute the difference for the first two characters and then call itself recursively for the remaining substring.
This method is more of a demonstration of recursion as it is less optimal than the iterative method due to function call overhead.
Time Complexity: O(n), where n is the length of the string.
Space Complexity: O(n), due to the recursion stack.
1#include <stdio.h>
2#include <stdlib.h>
3
4int recursive_score(const char* s, int index) {
5 if(s[index + 1] == '\0') return 0;
6 return abs(s[index] - s[index + 1]) + recursive_score(s, index + 1);
7}
8
9int main() {
10 char str[] = "hello";
11 printf("Score: %d\n", recursive_score(str, 0));
12 return 0;
13}
This C solution uses a recursive function recursive_score
, which calculates the score from an index. The base condition checks for the end of the string, and the recursive call processes the remaining substring.