Sort by

recency

|

1344 Discussions

|

  • + 0 comments
    def funnyString(s):
        # Write your code here
        c=''.join(reversed(list(s)))
        flag=True
        for i in range(1,len(s)):
            if abs(ord(s[i])-ord(s[i-1]))!= abs(ord(c[i])-ord(c[i-1])):
                flag=False
                
        if flag is True:
            return 'Funny'
        else:
            return 'Not Funny'
    
  • + 0 comments

    Here is my simple c++ solution, video explanation here : https://youtu.be/gcNAo9voHvk.

    string funnyString(string s) {
        string r = s;
        reverse(r.begin(), r.end());
        for(int i = 1; i < s.size(); i++){
            if(abs(s[i]-s[i-1]) != abs(r[i]- r[i-1])) return "Not Funny";
        }
        return "Funny";
    }
    
  • + 0 comments

    Here is my Python solution!

    def funnyString(s):
        reverse = [ord(letter) for letter in list(reversed(s))]
        s = [ord(letter) for letter in s]
        r = [abs(reverse[i] - reverse[i + 1]) for i in range(len(reverse) - 1)]
        s = [abs(s[i] - s[i + 1]) for i in range(len(reverse) - 1)]
        if r == s:
            return "Funny"
        return "Not Funny"
    
  • + 0 comments

    My C code

    bool isTheSameArrayOfInt(const int* r,const int* t,const int size) {
        for(int i = 0;i < size;i++) {
            if(r[i] != t[i]) {
                return false;
            }
        }
        return true;
    }
     
    char* funnyString(char* s) {
        int e = strlen(s) - 1, count = 0, taille = strlen(s);;
        int *begin = (int*)malloc((strlen(s))*sizeof(int));
        int *end = (int*)malloc((strlen(s))*sizeof(int));
        if(begin == NULL || end == NULL) {
            perror("allocation failed\n");
            exit(EXIT_FAILURE);
        }
        for(int i = 1;i < taille;i++) {
            begin[count] = abs(s[i] - s[i - 1]);
            end[count] = abs(s[e] - s[e - 1]);
            e--;
            count++;
        }
    
        bool result = isTheSameArrayOfInt(begin,end,count);
    
        free(begin);
        free(end);
    
        return result ? "Funny" : "Not Funny";
    }
    
  • + 0 comments
    public static String funnyString(String s) {
        int n = s.length();
    
        // Since the differences are symmetric, you only need to iterate up to the midpoint of the string
        for (int i = 0; i < n / 2; i++) {
            // Calculate the differences for the forward and backward traversals
            int leftDiff = Math.abs(s.charAt(i) - s.charAt(i + 1));
            int rightDiff = Math.abs(s.charAt(n - i - 1) - s.charAt(n - i - 2));
    
            if (leftDiff != rightDiff) {
                return "Not Funny";
            }                
        }        
    
        return "Funny";
    }