Funny String - HackerRank Solution.
NOTE: If you are copying my code then its an advice to you to copy it after downloading it to avoid any kind of compilation error its link is available at the bottom of the source code.
In this challenge, you will determine whether a string is funny or not. To determine whether a string is funny, create a copy of the string in reverse e.g. . Iterating through each string, compare the absolute difference in the ascii values of the characters at positions 0 and 1, 1 and 2 and so on to the end. If the list of absolute differences is the same for both strings, they are funny.
Determine whether a give string is funny. If it is, return
Funny
, otherwise return Not Funny
.
For example, given the string , the ordinal values of the charcters are . and the ordinals are . The
absolute differences of the adjacent elements for both strings are , so the answer is
absolute differences of the adjacent elements for both strings are , so the answer is
Funny
.
Function Description
Complete the funnyString function in the editor below. For each test case, it should return a string, either
Funny
or Not Funny
.
funnyString has the following parameter(s):
- s: a string to test
Input Format
The first line contains an integer , the number of queries.
The next lines each contain a string, .
The next lines each contain a string, .
Constraints
Output Format
For each string print whether it is
Funny
or Not Funny
on a new line.
Sample Input
2
acxz
bcxz
Sample Output
Funny
Not Funny
Explanation
You can use to store the reverse of .
Test Case 0:
,
Corresponding ASCII values of characters of the strings:
and
For both the strings the adjacent difference list is [2, 21, 2] so we print
Corresponding ASCII values of characters of the strings:
and
For both the strings the adjacent difference list is [2, 21, 2] so we print
Funny
.
Test Case 1:
,
Corresponding ASCII values of characters of the strings:
and
The adjacent difference list for string is [1, 21, 2] and for string it is [2, 21, 1]. Since they are not the same we print
Corresponding ASCII values of characters of the strings:
and
The adjacent difference list for string is [1, 21, 2] and for string it is [2, 21, 1]. Since they are not the same we print
Not Funny
.SOURCE CODE
import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.regex.*;
public class Solution {
// Complete the funnyString function below.
static String funnyString(String s) {
StringBuffer str=new StringBuffer(s);
str.reverse();
int flag=0;
for(int i=0;i<s.length()-1;i++)
{
int n1=Math.abs(s.charAt(i)-s.charAt(i+1));
int n2=Math.abs(str.charAt(i)-str.charAt(i+1));
if(n1==n2)
{
flag=1;
}
else
{
flag=0;
break;
}
}
if(flag==1)
{
return("Funny");
}
else
{
return("Not Funny");
}
}
private static final Scanner scanner = new Scanner(System.in);
public static void main(String[] args) throws IOException {
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));
int q = scanner.nextInt();
scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");
for (int qItr = 0; qItr < q; qItr++) {
String s = scanner.nextLine();
String result = funnyString(s);
bufferedWriter.write(result);
bufferedWriter.newLine();
}
bufferedWriter.close();
scanner.close();
}
}
Click here to Download
RESULT
If you have any question then leave a comment below I will do my best to answer that question.
Comments
Post a Comment