Happy Coding

This blog is for my memorandum about programming and English.

Happy Coding

This blog is for my memorandum

srm707 easy Cross

problem

There is a rectangular board that is divided into n rows by m columns of cells. Each cell is either black or white. You are given the description of the board in the board. Each character in board represents one cell. More precisely, the character board[i][j] represents the cell at coordinates (row i, column j). The character ‘#’ represents a black cell, the character ‘.’ is a white cell. Formally, there is a cross centered at (x, y) if the following five cells are all black: (x, y), (x+1, y), (x-1, y), (x, y-1), and (x, y+1). Note that other cells adjacent to the cross may also be black, it is still a valid cross.

Return “Exists” if there is at least one cross on the given board. Otherwise, return “Does not exist”. Note that the return value is case-sensitive.

code

Insertion

problem

You are given two 32bit numbers n and m and two bit positions, i and j. Write a method to insert M into N such that M starts at bit j and ends at bit i.

how to solve

  • Clear the bits j through i in N
  • Shift M so that it lines up with bits j through i
  • Merge M and N

code

AnimalShelter

Problem

An animal shelter, which holds only dogs and cats. Create the data structures to implement operations such as enqueue, dequeueAny, dequeueDog and dequeueCat.

How to solve

My approach is to simply use separate queues for dogs and cats. Then we store some sort of timestamp to mark when each animal was enqueued. When we called dequeueAny, we compare the front of the dog and cat queue and return the oldest.

Code

Rotate Matrix

problem

Given an image represented by an N*N matrix, where each pixel in the image is 4 bytes, write a method to rotate the image by 90 degrees. Can you do this in place?

how to solve

We swap on each layer, starting from the outermost layer and working our way inwards.

code

OneAway

Problem

There are three types of edits that can be performed on strings: insert a character, remove a character, or replace a character. Given two strings, write a function to check if they are one edit (or zero edits) away.

How to solve

Implement three method testing whether the array can be edited by each way. I can check the possibility of each edit by the following way.

  • Insert and Remove This means if we compared the strings they would be identical except for one character and the difference of the length is one.

  • Replace This means that two strings are different only in one place

Code