Solved

countPairs challenge

Posted on 2016-09-21
7
64 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
ID: 41809568
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
ID: 41810790
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
ID: 41811307
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
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 7

Author Comment

by:gudii9
ID: 41811310
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
ID: 41811438
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
ID: 41811450
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
ID: 41811827
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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction This article is the last of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers our test design approach and then goes through a simple test case example, how …
Whether you've completed a degree in computer sciences or you're a self-taught programmer, writing your first lines of code in the real world is always a challenge. Here are some of the most common pitfalls for new programmers.
This video teaches viewers about errors in exception handling.
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.

943 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

15 Experts available now in Live!

Get 1:1 Help Now