Skip to main content

Funny String

Problem Statement
Suppose you have a string S which has length N and is indexed from 0 to N−1. String R is the reverse of the string S. The string S is funny if the condition |SiSi−1|=|RiRi−1|is true for every i from 1 to N−1.
(Note: Given a string str, stri denotes the ascii value of the ith character (0-indexed) of str. |x| denotes the absolute value of an integer x)
Input Format
First line of the input will contain an integer T. T testcases follow. Each of the next T lines contains one string S.
Constraints
·         1<=T<=10
·         2<=length of S<=10000
Output Format
For each string, print Funny or Not Funny in separate lines.
Sample Input
2
acxz
bcxz
Sample Output
Funny
Not Funny
Explanation
Consider the 1st testcase acxz
here
|c-a| = |x-z| = 2
|x-c| = |c-x| = 21
|z-x| = |a-c| = 2
Hence Funny.
Consider the 2nd testcase bcxz
here
|c-b| != |x-z|
Hence Not Funny.


import java.util.*;


public class Solution {
    static int retValue(char c1,char c2){
              return Math.abs((byte)c1-(byte)c2);
       }
      
       static boolean isFunny(String str){
       boolean retV=true;
       String strRev=new StringBuffer(str).reverse().toString();
       char[] chrArr1=str.toCharArray();
       int len=chrArr1.length;
       char[] chrArr2=strRev.toCharArray();
       for(int i=0;i<len-1;i++){
              if(retValue(chrArr1[i+1],chrArr1[i])!=retValue(chrArr2[i+1],chrArr2[i])){
                     retV = false;
              }
       }
      
       return retV;
    }
    public static void main(String[] args) {
        /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
        Scanner scan=new Scanner(System.in);
        int n=scan.nextInt();
        while(n>0){
              String inpStr=scan.next();
         if(isFunny(inpStr)){
              System.out.println("Funny");
        }else{
              System.out.println("Not Funny");
        }
              n--;
        }
       
    }
}


Testcase0
Input (stdin)
2
acxz
bcxz
Your Output (stdout)
Funny
Not Funny
Expected Output
Funny
Not Funny

·         Testcase 1
Input (stdin)
2
ivvkxq
ivvkx
Your Output (stdout)
Not Funny
Not Funny
Expected Output
Not Funny
Not Funny



Comments

Popular posts from this blog

CODILITY: Determine whether given string of parentheses is properly nested.

Task description A string S consisting of N characters is called  properly nested  if: S is empty; S has the form " (U) " where U is a properly nested string; S has the form " VW " where V and W are properly nested strings. For example, string " (()(())()) " is properly nested but string " ()) " isn't. Write a function: class Solution { public int solution(String S); } that, given a string S consisting of N characters, returns 1 if string S is properly nested and 0 otherwise. For example, given S = " (()(())()) ", the function should return 1 and given S = " ()) ", the function should return 0, as explained above. Assume that: N is an integer within the range [ 0 .. 1,000,000 ]; string S consists only of the characters " ( " and/or " ) ". Complexity: expected worst-case time complexity is O(N); expected worst-case space complexity is O(1) (not counting the storage requi...

Distinct: Compute number of distinct values in an array.

Task description Write a function class Solution { public int solution(int[] A); } that, given a zero-indexed array A consisting of N integers, returns the number of distinct values in array A. Assume that: N is an integer within the range [ 0 .. 100,000 ]; each element of array A is an integer within the range [ −1,000,000 .. 1,000,000 ]. For example, given array A consisting of six elements such that: A[0] = 2 A[1] = 1 A[2] = 1 A[3] = 2 A[4] = 3 A[5] = 1 the function should return 3, because there are 3 distinct values appearing in array A, namely 1, 2 and 3. Complexity: expected worst-case time complexity is O(N*log(N)); expected worst-case space complexity is O(N), beyond input storage (not counting the storage required for input arguments). Elements of input arrays can be modified. class Solution { public int solution ( int [] A) { // write your code in Java SE 8 int len=A.length; int count= 1 ; ...

change directory (cd) function for an abstract file system ( Java Implementation )

Write a function that provides change directory (cd) function for an abstract file system. Notes: Root path is '/'. Path separator is '/'. Parent directory is addressable as "..". Directory names consist only of English alphabet letters (A-Z and a-z). For example, new Path("/a/b/c/d").cd("../x").getPath() should return "/a/b/c/x". Note: The evaluation environment uses '\' as the path separator. public class Path {     private String path;     public Path(String path) {         this.path = path;     }     public String getPath() {         return path;     }     public Path cd(String newPath) {         //throw new UnsupportedOperationException("Waiting to be implemented."); String[] newP=newPath.split("/");     String[] oldP=path.split("/");     int lnCount=0;     for(String str:newP){     if(st...