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 |Si−Si−1|=|Ri−Ri−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
Input (stdin)
2
ivvkxq
ivvkx
Your Output (stdout)
Not Funny
Not Funny
Expected Output
Not Funny
Not Funny
Comments
Post a Comment