Solved

countAbc challenge

Posted on 2016-09-21
9
67 Views
Last Modified: 2016-09-22
Hi,


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


I wrote as below and failing some tests.
Expected      Run            
countAbc("abc") → 1      0      X      
countAbc("abcxxabc") → 2      0      X      
countAbc("abaxxaba") → 2      0      X      
countAbc("ababc") → 2      1      X      
countAbc("abxbc") → 0      0      OK      
countAbc("aaabc") → 1      0      X      
countAbc("hello") → 0      0      OK      
countAbc("") → 0      0      OK      
countAbc("ab") → 0      0      OK      
countAbc("aba") → 1      0      X      
countAbc("aca") → 0      0      OK      
countAbc("aaa") → 0      0      OK      
other tests
X      


public int countAbc(String str) {
  
  
 CharSequence cs1="abc";
 CharSequence cs2="aba";
  if(str.length()==0||str.length()==1||str.length()==2){
    return 0;
  }
  if(!str.contains(cs1)||!str.contains(cs2)){
    return 0;
  }
  else return 1+countAbc(str.substring(3));
}

Open in new window


how to fix? any alternate approaches or improvements? please advise
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
  • 5
  • 3
9 Comments
 
LVL 7

Author Comment

by:gudii9
ID: 41809446
public int countAbc(String str) {
  
  
 CharSequence cs1="abc";
 
 CharSequence cs2="aba";
  if(str.length()==0||str.length()==1||str.length()==2){
    return 0;
  }


  else if(!str.contains(cs1)||!str.contains(cs2)){
    return 0;
  }
  else return 1+countAbc(str.substring(1));
}

Open in new window


above also failing some tests
0
 
LVL 37

Accepted Solution

by:
zzynx earned 250 total points
ID: 41810187
This works:

public int countAbc(String str) {
  String stringABC = "abc";    
  String stringABA = "aba";

  if (str.length()==0||str.length()==1||str.length()==2){
    return 0;
  }

  if(str.startsWith(stringABC)){
    return 1 + countAbc(str.substring(3));
  } else if(str.startsWith(stringABA)){
    return 1 + countAbc(str.substring(2));
  }
  return countAbc(str.substring(1));
}

Open in new window

0
 
LVL 34

Assisted Solution

by:ste5an
ste5an earned 250 total points
ID: 41810195
(str.length()==0||str.length()==1||str.length()==2)

Open in new window


Really?
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 37

Expert Comment

by:zzynx
ID: 41810211
No.
if (str.length()<3)

Open in new window

:)
0
 
LVL 7

Author Comment

by:gudii9
ID: 41810797
  else if(!str.contains(cs1)||!str.contains(cs2)){

Open in new window


contains charsequence approach wont work here?
https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#contains(java.lang.CharSequence)
0
 
LVL 7

Author Comment

by:gudii9
ID: 41810806
public int countAbc(String str) {
  String stringABC = "abc";    
  String stringABA = "aba";

  if (str.length()<3){
    return 0;
  }

  if(str.startsWith(stringABC)){
    return 1 + countAbc(str.substring(3));
  } else if(str.startsWith(stringABA)){
    return 1 + countAbc(str.substring(2));
  }
  return countAbc(str.substring(1));
}

Open in new window


startsWith how is working here why we are moving to str.substring(2));
instead

str.substring(1));
0
 
LVL 7

Author Comment

by:gudii9
ID: 41810811
return 1 + countAbc(str.substring(3));
why one return has 3 in if loop as above and one has 2 as below in else if?

  return 1 + countAbc(str.substring(2));

abc need not be at start right? it could be at middle also?
0
 
LVL 37

Expert Comment

by:zzynx
ID: 41810949
If we find the substring "aba", that last 'a' could be the start of another "aba" or "abc" and the challenge wants us to count that. That's why
0
 
LVL 7

Author Comment

by:gudii9
ID: 41811225
got it
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
Print Rhino Java Array in Javascript 1 58
junit example issue 2 58
"lblTime is not declared" 3 65
How do i find out all classes which contain nested class 2 16
This is about my first experience with programming Arduino.
This article will inform Clients about common and important expectations from the freelancers (Experts) who are looking at your Gig.
Viewers will learn how to properly install Eclipse with the necessary JDK, and will take a look at an introductory Java program. Download Eclipse installation zip file: Extract files from zip file: Download and install JDK 8: Open Eclipse and …
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 …

751 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