• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 233
  • Last Modified:

string concatenation challenge

Hi,

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

I wrote as below
public String stringSplosion(String str) {
  String s="";
  for(int i=0;i<=str.length()-1;i++){
  return (s+str.substring(i));
  
  }
  return null;
}

Open in new window

My test cases failing as below


Expected      Run            
stringSplosion("Code") → "CCoCodCode"      "Code"      X         
stringSplosion("abc") → "aababc"      "abc"      X         
stringSplosion("ab") → "aab"      "ab"      X         
stringSplosion("x") → "x"      "x"      OK         
stringSplosion("fade") → "ffafadfade"      "fade"      X         
stringSplosion("There") → "TThTheTherThere"      "There"      X         
stringSplosion("Kitten") → "KKiKitKittKitteKitten"      "Kitten"      X         
stringSplosion("Bye") → "BByBye"      "Bye"      X         
stringSplosion("Good") → "GGoGooGood"      "Good"      X         
stringSplosion("Bad") → "BBaBad"      "Bad"      X         

How do i fix and improve my code. Please advise
0
gudii9
Asked:
gudii9
3 Solutions
 
n2fcCommented:
public String stringSplosion(String str) {
  String s="";
  for(int i=0;i<str.length();i++){
     s=s+str.substring(0,i+1);
  }
  return s;
}

Open in new window

0
 
krakatoaCommented:
Or
public String stringSplosion(String str) {


StringBuilder sb = new StringBuilder();

for(int y=0;y<str.length()+1;y++){sb.append(str.substring(0,y));}

return sb.toString();

  }

Open in new window

0
 
n2fcCommented:
Yet another solution (a tad more arcane):

public String stringSplosion(String str) {
   String s="";
   for(int i=0; i<str.length(); s+=str.substring(0, ++i));
   return s;
}

Open in new window

0
Never miss a deadline with monday.com

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

 
krakatoaCommented:
And one more, slightly better incremental model :

public String stringSplosion(String str) {

StringBuilder sb = new StringBuilder();

for(int y=0;y<str.length();y++){sb.append(str.substring(0,y+1));}

return sb.toString();
  }

Open in new window

0
 
gudii9Author Commented:
some reason stringbuilder is not coming to mind.

Let me read these solutions more detail once i get more time
0
 
krakatoaCommented:
StringBuilder is useful so yes do read the lit on it.
0
 
awking00Commented:
gudii9,
You have asked numerous questions involving the manipulation of strings. As I have mentioned in the past a String is an object, not a primitive datatype, and is immutable (meaning it can not be changed). However, methods may be applied to a String (e.g. using charArrays, concatenation, substrings, indexesOf, etc.) to create another String with the desired affect. The StringBuilder class was developed primarily to get around this fact. You seem to have eschewed the use of StringBuilder in favor of other methods, which is fine. It points out that there is almost always more than one way of accomplishing objectives in Java. In certain cases, methods other than StringBuilder might be easier to understand and write but, in many other cases, you will find that StringBuilder offers a better means of manipulating Strings. It behooves you to understand the many tools Java provides such as StringBuilder, which krakatoa suggests, and I second, you read up on.
0

Featured Post

The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now