Solved

countPairs challenge

Posted on 2016-09-21
7
93 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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
Get 15 Days FREE Full-Featured Trial

Benefit from a mission critical IT monitoring with Monitis Premium or get it FREE for your entry level monitoring needs.
-Over 200,000 users
-More than 300,000 websites monitored
-Used in 197 countries
-Recommended by 98% of users

 
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

Create CentOS 7 Newton Packstack Running Keystone

A bug was filed against RDO for the installation of Keystone v3. This guide is designed to walk you through the configuration for using Keystone v3 with Packstack. You will accomplish this using various repos and the Answers file.

Question has a verified solution.

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

This is about my first experience with programming Arduino.
A solution for Fortify Path Manipulation.
In this fifth video of the Xpdf series, we discuss and demonstrate the PDFdetach utility, which is able to list and, more importantly, extract attachments that are embedded in PDF files. It does this via a command line interface, making it suitable …
Six Sigma Control Plans

623 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