Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

startMatch challenge

Posted on 2015-01-15
14
Medium Priority
?
99 Views
Last Modified: 2015-02-05
Hi,

I am trying below challenge
http://codingbat.com/prob/p141494
I did not understand the challenge. 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
  • 6
  • 3
  • 3
  • +1
14 Comments
 
LVL 84

Assisted Solution

by:ozo
ozo earned 668 total points
ID: 40552570
Given a string and a second "word" string, we'll say that the word matches the string if it appears at the front of the string, except its first char does not need to match exactly. On a match, return the front of the string, or otherwise return the empty string. So, so with the string "hippo" the word "hi" returns "hi" and "xip" returns "hip". The word will be at least length 1.

startWord("hippo", "hi") → "hi"
startWord("hippo", "xip") → "hip"
startWord("hippo", "i") → "h"
"hi" matches the front of "hippo" exactly.
"xip" matches the front of "hippo", except that the first character does not match exactly
"i" matches the front of "hippo", except that the first character does not match exactly
0
 
LVL 32

Assisted Solution

by:awking00
awking00 earned 668 total points
ID: 40553778
If a match of the "word" occurs at the beginning of the string "str" without respect to the first character in the string, return the substring of str for the length of the word. That infers that if the length of the word is one, the first character of the str will always be returned. What the challenge doesn't seem to address is what to return if there is no match at all. I suspect the answer to that would be to return an empty string. If that is the case, the following should work:

public static String startWord(String str, String word) {
	int len = word.length();
	if (len == 1) {
		return str.substring(0, 1);
	}
	String wordPart = word.substring(1);
	if (str.startsWith(wordPart, 1)) {
		return str.substring(0, len);
	}
	return "";
}

Open in new window

0
 
LVL 84

Expert Comment

by:ozo
ID: 40554474
Commenting out lines 3,4,5 of http:#a40553778 improves the result when str.length()==0
0
Quick Start: DOCKER

Sometimes you just need a Quick Start on a topic in order to begin using it.. this is just what you need to know to get up and running with Docker!

 
LVL 37

Accepted Solution

by:
zzynx earned 664 total points
ID: 40559302
Remember to first handle the "corner cases"?

Here we go.
1) if the string is empty, then just return the empty string

  if (str.isEmpty()) {
     return "";
  }

Open in new window

2) if the word completely fits the 'str' parameter, then return the word [startWord("hippo", "hi") -> "hi"]

  if (str.startsWith(word)) {
     return word;
  }

Open in new window

3) if the word (not taking into account the first character of word) fits the 'str' parameter, then return the part of 'str' that matches [startWord("hippo", "xip") -> "hip"]

  if (str.substring(1).startsWith(word.substring(1))){
     return str.substring(0, word.length());
  }

Open in new window

4) if the word fits the 'str' parameter (not taking into account the first character of str), then return the part of 'str' that matches [startWord("hippo", "i") -> "h"]

  if (str.substring(1).startsWith(word)){
     return str.substring(0, word.length());
  }

Open in new window


5) if none of the above, then return the empty string

  return "";

Open in new window



Bringing all this cases together we have as a result:

public String startWord(String str, String word) {
  if (str.isEmpty()) return "";
  if (str.startsWith(word)) {
     return word;
  }
  if (str.substring(1).startsWith(word.substring(1))){
     return str.substring(0, word.length());
  }
  if (str.substring(1).startsWith(word)){
     return str.substring(0, word.length());
  }
  return "";
}

Open in new window


Or when combining 3) and 4) together:

public String startWord(String str, String word) {
  if (str.isEmpty()) return "";
  if (str.startsWith(word)) {
     return word;
  }
  if ( str.substring(1).startsWith(word.substring(1)) || str.substring(1).startsWith(word) ){
     return str.substring(0, word.length());
  }
  return "";
}

Open in new window

0
 
LVL 84

Expert Comment

by:ozo
ID: 40559363
The code in http:#a40559302 also includes parts that are better commented out.
0
 
LVL 7

Author Comment

by:gudii9
ID: 40559799
On a match, return the front of the string,

how many characters of the front of the string. Is i as many characters of the second "word" string. please advise
0
 
LVL 32

Expert Comment

by:awking00
ID: 40559885
If the word is made up of 2 characters and you have a match return the first 2 characters of the string, if word is 3 characters long return the first 3 characters of the string if you have a match, etc.
0
 
LVL 37

Expert Comment

by:zzynx
ID: 40559998
My code passes all tests
0
 
LVL 84

Expert Comment

by:ozo
ID: 40560030
The code in http:#a40559302 does pass all http://codingbat.com/prob/p141494 tests.
If part of the code was omitted, it would still pass all tests, and would also not fail to follow the English specification for some cases that  http://codingbat.com/prob/p141494 does not test.


Return the same front of the string that matched the second "word" string, which would contain the same number of characters.
0
 
LVL 7

Author Comment

by:gudii9
ID: 40570725
"hi" matches the front of "hippo" exactly.

one general interest question how do you underline under "hi" as you did in comment

http:#a40552570
http://www.experts-exchange.com/Programming/Languages/Java/Q_28597724.html#a40552570

I tried to underline in word document and copy pasted and posted and underline is lost. please advise
0
 
LVL 84

Expert Comment

by:ozo
ID: 40570741
Do you see a U icon at the top of the "Post a Comment" window?
It wraps a
[u][/u]

Open in new window

around the selected text.
0
 
LVL 37

Expert Comment

by:zzynx
ID: 40570751
In the text box you are typing your comment, you
1) select the text you want to underline
2) you press the button with the underlined U as icon (cf. screenshot)
screenshot
The same way you can set text in bold or italic (using the buttons on the left of the U button)
You can probably guess what the other buttons do.
0
 
LVL 7

Author Comment

by:gudii9
ID: 40570786
got it.
0
 
LVL 84

Expert Comment

by:ozo
ID: 40592734
public String startWord(String str, String word) {
    if (str.isEmpty()) return "";
  if (str.startsWith(word)) {
     return word;
  }
  if ( str.substring(1).startsWith(word.substring(1)) /* || str.substring(1).startsWith(word) */ ){
     return str.substring(0, word.length());
  }
  return "";
}
passes all tests (but the  || str.substring(1).startsWith(word)  would cause startWord("hippo", "ipp") to incorrectly return "hip")
 public String startWord(String str, String word) {
  if ( str.length() >= word.length() && str.substring(1).startsWith(word.substring(1)) ){
     return str.substring(0, word.length());
  }
  return "";
}
passes all tests even more simply
0

Featured Post

Technology Partners: 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

Go is an acronym of golang, is a programming language developed Google in 2007. Go is a new language that is mostly in the C family, with significant input from Pascal/Modula/Oberon family. Hence Go arisen as low-level language with fast compilation…
Introduction This article is the second of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers the basic installation and configuration of the test automation tools used by…
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.
The viewer will learn how to pass data into a function in C++. This is one step further in using functions. Instead of only printing text onto the console, the function will be able to perform calculations with argumentents given by the user.

722 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