Solved

countPairs challenge

Posted on 2016-09-21
7
57 Views
Last Modified: 2016-09-23
Hi,


I am working on below challenge.
http://codingbat.com/prob/p154048


I am not clear on below description. please advise



Recursion-1 > countPairs
prev  |  next  |  chance
We'll say that a "pair" in a string is two instances of a char separated by a char. So "AxA" the A's make a pair. Pair's can overlap, so "AxAxA" contains 3 pairs -- 2 for A and 1 for x. Recursively compute the number of pairs in the given string.

countPairs("axa") → 1
countPairs("axax") → 2
countPairs("axbx") → 1
0
Comment
Question by:gudii9
  • 4
  • 3
7 Comments
 
LVL 27

Expert Comment

by:rrz
Comment Utility
This challenge is very similar to
https://www.experts-exchange.com/questions/28971426/pairstar-challenge.html  
You could use the same approach here.  The code here will very similar.  
In this challenge, you will return a int that will the number of pairs. The pairs in this challenge are separated by another character. So, the conditional is a little different.
0
 
LVL 7

Author Comment

by:gudii9
Comment Utility
i got meaning now. let me think

so basically same character must be separated by one other character and we need to count such group of 3 counts...

We'll say that a "pair" in a string is two instances of a char separated by a char. So "AxA" the A's make a pair. Pair's can overlap, so "AxAxA" contains 3 pairs -- 2 for A and 1 for x. Recursively compute the number of pairs in the given string.

countPairs("axa") → 1
countPairs("axax") → 2
countPairs("axbx") → 1
0
 
LVL 7

Author Comment

by:gudii9
Comment Utility
public int countPairs(String str) {
  int count=0;
  

  if(str.length() < 2){
    return 0;
  }
  if(str.charAt(0) == str.charAt(2)){
    return 1+ countPairs(str.substring(1));
  }
  else{
    return  countPairs(str.substring(1));
  }


}

Open in new window


above fails below tests.

Expected      Run            
countPairs("axa") → 1      Exception:java.lang.StringIndexOutOfBoundsException: String index out of range: 2 (line number:8)      X      
countPairs("axax") → 2      Exception:java.lang.StringIndexOutOfBoundsException: String index out of range: 2 (line number:8)      X      
countPairs("axbx") → 1      Exception:java.lang.StringIndexOutOfBoundsException: String index out of range: 2 (line number:8)      X      
countPairs("hi") → 0      Exception:java.lang.StringIndexOutOfBoundsException: String index out of range: 2 (line number:8)      X      
countPairs("hihih") → 3      Exception:java.lang.StringIndexOutOfBoundsException: String index out of range: 2 (line number:8)      X      
countPairs("ihihhh") → 3      Exception:java.lang.StringIndexOutOfBoundsException: String index out of range: 2 (line number:8)      X      
countPairs("ihjxhh") → 0      Exception:java.lang.StringIndexOutOfBoundsException: String index out of range: 2 (line number:8)      X      
countPairs("") → 0      0      OK      
countPairs("a") → 0      0      OK      
countPairs("aa") → 0      Exception:java.lang.StringIndexOutOfBoundsException: String index out of range: 2 (line number:8)      X      
countPairs("aaa") → 1      Exception:java.lang.StringIndexOutOfBoundsException: String index out of range: 2 (line number:8)      X      
other tests
X      
Your progress graph for this problem


please advise
0
Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

 
LVL 7

Author Comment

by:gudii9
Comment Utility
public int countPairs(String str) {
  int count=0;
  

  if(str.length() < 3){
    return 0;
  }
  if(str.charAt(0) == str.charAt(2)){
    return 1+ countPairs(str.substring(1));
  }
  else{
    return  countPairs(str.substring(1));
  }


}

Open in new window


above passes all tests.
any improvements or alternate approaches?
0
 
LVL 27

Expert Comment

by:rrz
Comment Utility
My code is exactly the same as your code except for the optional else word. The else is optional because the return statements control the flow.
0
 
LVL 7

Author Comment

by:gudii9
Comment Utility
if  with if with else
and
if with else if with else

what is difference in this case?
both passes all tests?
0
 
LVL 27

Accepted Solution

by:
rrz earned 500 total points
Comment Utility
There is no difference in this case.  
The pseudo code in my mind is

if(condition)return something
if(another condition)return some other thing
return something different

My code;
public int countPairs(String str) {
  if(str.length() < 3)return 0;
  if(str.charAt(0) == str.charAt(2))return 1 + countPairs(str.substring(1));
  return countPairs(str.substring(1));
}

Open in new window

 I don't think the else statement adds anything to the logic. That is why I left them out.
0

Featured Post

What Is Threat Intelligence?

Threat intelligence is often discussed, but rarely understood. Starting with a precise definition, along with clear business goals, is essential.

Join & Write a Comment

This article will show, step by step, how to integrate R code into a R Sweave document
Displaying an arrayList in a listView using the default adapter is rarely the best solution. To get full control of your display data, and to be able to refresh it after editing, requires the use of a custom adapter.
Viewers will learn about if statements in Java and their use The if statement: The condition required to create an if statement: Variations of if statements: An example using if statements:
This tutorial explains how to use the VisualVM tool for the Java platform application. This video goes into detail on the Threads, Sampler, and Profiler tabs.

772 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now