Java > Array-2 >sum13 (CodingBat Solution)

Problem:

Return the sum of the numbers in the array, returning 0 for an empty array. Except the number 13 is very unlucky, so it does not count and numbers that come immediately after a 13 also do not count.

sum13({1, 2, 2, 1}) → 6
sum13({1, 1}) → 2
sum13({1, 2, 2, 1, 13}) → 6


Solution:

public int sum13(int[] nums) {
int sum =0;
  for (int i = 0;i <nums.length ;i++)
  {
  if (nums[i] != 13)
  sum+=nums[i];
  else if (nums[i] == 13 && i < nums.length -1 ) {
  nums[i]=0;
  nums[i+1] =0; }
  }
  return sum;
}


13 comments :

  1. Great site! I'm glad to see a resource to see how others have solved the same problems. I happened to use a slightly different strategy: I incremented the index to skip the next value.

    That solves the extra conditional problem I think you came across to prevent an out-of-bounds exception.

    public int sum13(int[] nums) {
    if (nums.length == 0) return 0;
    int sum = 0;
    for (int i = 0; i < nums.length; i++) {
    if (nums[i] != 13) sum += nums[i];
    else {
    i++;
    }
    }
    return sum;
    }

    ReplyDelete
    Replies
    1. This one's a lot cleaner and nicer. I came up with this solution as well.

      Delete
  2. public int sum13(int[] nums) {
    int sum = 0;
    for (int i = 0; i < nums.length; i++) {
    if (nums[i] == 13) {
    i++;
    } else {
    sum += nums[i];
    }
    }
    return sum;
    }

    ReplyDelete
  3. here is my solution
    public int sum13(int[] arr)
    {
    int arrSize = arr.length;
    int sum = 0;
    if(arr.length == 0 ) return 0;
    for(int i = 0, j = 1; i < arrSize; i++ , j++)
    {
    if(arr[i] == 13 ||(i > 0 && arr[i-1] == 13))
    {
    continue;
    }
    else
    {
    sum+= arr[i];
    }


    }

    return sum;
    }

    ReplyDelete
  4. How bah dah?
    public int sum13(int[] nums) {
    int sum = 0;
    for(int i = 0; i < nums.length; i++){
    if(nums[i] == 13){
    i += 1;
    continue; }
    sum += nums[i];
    }
    return sum;
    }

    ReplyDelete
  5. public int sum13(int[] nums) {
    int sum=0;
    if(nums.length==0){
    return 0;
    }
    for(int i=0;i0&&nums[i-1]==13){
    continue;
    }
    sum+=nums[i];
    }
    return sum;
    }

    ReplyDelete
  6. This is my solution, 100 % mine.

    public int sum13(int[] nums) {

    int count=0;

    for(int i=0;i<nums.length;i++) {

    if(nums[i]!=13) {

    count+=nums[i];
    }

    if(nums[i]==13){

    if(i+1<nums.length){
    nums[i+1]=0;
    }
    }

    }





    return count;
    }

    ReplyDelete
  7. mine is this...

    public int sum13(int[] nums) {
    int sum = 0;
    for(int i=0; i<nums.length; i++)
    {
    if(nums[i] != 13)
    {
    sum+=nums[i];
    } else
    {
    i++;
    if(i == nums.length-2 || i == nums.length -1)
    {
    break;
    }
    }
    }
    return sum;
    }

    ReplyDelete
  8. public int sum13(int[] nums) {
    int sum =0;
    if(nums.length<0)
    {
    return 0;
    }else
    {
    for(int i=0; i<nums.length; i++)
    {
    if(nums[i]==13)
    {
    i=i+1;
    }else
    {
    sum = sum + nums[i];
    }
    }
    }return sum;
    }

    ReplyDelete
  9. public int sum13(int[] nums) {
    int sum = 0;
    for (int i = 0; i < nums.length; i++)
    if (nums[i] == 13)
    i++;
    else sum += nums[i];
    return sum;
    }

    ReplyDelete
  10. public int sum13(int[] nums) {
    int sum=0;
    for(int i=0;i<nums.length;i++)
    {
    if(nums[i]==13)
    {
    i=i+1;
    continue;
    }
    sum+=nums[i];
    }
    return sum;
    }

    ReplyDelete
  11. public int sum13(int[] nums) {
    int sum=0;
    for(int i=0;i<nums.length;i++)
    {
    if(nums[i]==13)
    {
    i=i+1;
    continue;
    }
    sum =sum+ nums[i];
    continue;
    }
    return sum;
    }

    ReplyDelete
  12. public int sum13(int[] nums) {
    int count = 0 ;
    for (int x = 0 ; x < nums.length; x ++){
    if(nums[x] != 13){
    count += nums[x] ;
    }
    else
    x += 1 ;
    }
    return count ;
    }

    ReplyDelete

Follow Me

If you like our content, feel free to follow me to stay updated.

Subscribe

Enter your email address:

We hate spam as much as you do.

Upload Material

Got an exam, project, tutorial video, exercise, solutions, unsolved problem, question, solution manual? We are open to any coding material. Why not upload?

Upload

Copyright © 2012 - 2014 Java Problems  --  About  --  Attribution  --  Privacy Policy  --  Terms of Use  --  Contact