Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 176
  • Last Modified:

count7 challenge

Hi,

I am working on below challenge

http://codingbat.com/prob/p101409


Given a non-negative int n, return the count of the occurrences of 7 as a digit, so for example 717 yields 2. (no loops). Note that mod (%) by 10 yields the rightmost digit (126 % 10 is 6), while divide (/) by 10 removes the rightmost digit (126 / 10 is 12).

count7(717) → 2
count7(7) → 1
count7(123) → 0

Not clear on how to get 7 count recursively. please advisde
0
gudii9
Asked:
gudii9
  • 6
  • 5
2 Solutions
 
Pawan KumarDatabase ExpertCommented:
Enjoy :)

--

DECLARE @intValue AS VARCHAR(10) = '1717E7'
 
SELECT SUM( CASE WHEN SUBSTRING(@intValue,number,1) LIKE '[7]' THEN 1 ELSE 0 END ) Count7DIGITS FROM
( 
  SELECT DISTINCT number FROM
  MASTER..SPT_VALUES WHERE number > 0 AND number <= DATALENGTH(@intValue) 
) x

--

Open in new window

0
 
rrzCommented:
CodingBat gave you the operations you need to use.
Since the challenge asks us to return a count, we can have the "base case" return 0 and not affect the count.
0
 
gudii9Author Commented:
public int count7(int n) {
  if (n < 1) {
    return 0;
  }
  if ((n % 10) == 7){ return 1 + count7(n/10);
  }
  else {
  return count7(n/10);
  }
}

Open in new window


above pass all. any improvement and alternate approaches?
0
Independent Software Vendors: 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!

 
rrzCommented:
That is good. My solution is the same as yours.
0
 
gudii9Author Commented:
if then if then else
in above fashion code is there else belong to top if or second(last if in this case)?

public int count7(int n) {
  if (n < 1) {//else belongs to this if ??
    return 0;
  }
  if ((n % 10) == 7){ return 1 + count7(n/10);//below else belongs to this if or above if?
  }
 [b] else {
  return count7(n/10);
  }[/b]

Open in new window

}
0
 
rrzCommented:
The else block is for the second if
0
 
gudii9Author Commented:
The else block is for the second if
how we know. is that is rule always else belong to its immediate top if not topmost if?
0
 
rrzCommented:
how we know. is that is rule
Please read  
https://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.9   
It is called
The if-then-else Statement.  
The "else" is always associated with the "if" that proceeds it.
0
 
gudii9Author Commented:
oh
https://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.9
as per above link
IfThenStatement:
if ( Expression ) Statement
IfThenElseStatement:
if ( Expression ) StatementNoShortIf else Statement
IfThenElseStatementNoShortIf:
if ( Expression ) StatementNoShortIf else StatementNoShortIf
what is StatementNoShortIf
is there something like shortif and lognif?
0
 
rrzCommented:
what is StatementNoShortIf
That is confusing.  I can't really explain why they wrote that. But, it is linked to
https://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.5
0
 
gudii9Author Commented:
The "else" is always associated with the "if" that proceeds it.

in that link where they mentioned above point?

14.9.2. The if-then-else Statement

An if-then-else statement is executed by first evaluating the Expression. If the result is of type Boolean, it is subject to unboxing conversion (§5.1.8).

If evaluation of the Expression or the subsequent unboxing conversion (if any) completes abruptly for some reason, then the if-then-else statement completes abruptly for the same reason.

Otherwise, execution continues by making a choice based on the resulting value:

If the value is true, then the first contained Statement (the one before the else keyword) is executed; the if-then-else statement completes normally if and only if execution of that statement completes normally.

If the value is false, then the second contained Statement (the one after the else keyword) is executed; the if-then-else statement completes normally if and only if execution of that statement completes normally.

14.10. The assert Statement

That is confusing.
not sure either on  what they meant by unboxing in above context?
0
 
rrzCommented:
not sure either on  what they meant by unboxing in above context?
They reference (§5.1.8). Which is at  
https://docs.oracle.com/javase/specs/jls/se8/html/jls-5.html#jls-5.1.8 
or maybe it is better explained at  
https://docs.oracle.com/javase/tutorial/java/data/autoboxing.html
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

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