forked from kdn251/interviews
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add PalindromicSubstrings and PaintHouse
- Loading branch information
Kevin Naughton Jr
authored and
Kevin Naughton Jr
committed
May 29, 2018
1 parent
84a1d4c
commit daf5e85
Showing
6 changed files
with
208 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
//Given a string, your task is to count how many palindromic substrings in this string. | ||
//The substrings with different start indexes or end indexes are counted as different substrings | ||
//even they consist of same characters. | ||
|
||
//Example 1: | ||
//Input: "abc" | ||
//Output: 3 | ||
//Explanation: Three palindromic strings: "a", "b", "c". | ||
//Example 2: | ||
//Input: "aaa" | ||
//Output: 6 | ||
//Explanation: Six palindromic strings: "a", "a", "a", "aa", "aa", "aaa". | ||
//Note: | ||
//The input string length won't exceed 1000. | ||
|
||
class PalindromicSubstrings { | ||
int result = 0; | ||
public int countSubstrings(String s) { | ||
if(s == null || s.length() == 0) { | ||
return 0; | ||
} | ||
|
||
for(int i = 0; i < s.length(); i++) { | ||
extendPalindrome(s, i, i); | ||
extendPalindrome(s, i, i + 1); | ||
} | ||
|
||
return result; | ||
} | ||
|
||
public void extendPalindrome(String s, int left, int right) { | ||
while(left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)) { | ||
result++; | ||
left--; | ||
right++; | ||
} | ||
} | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
//There are a row of n houses, each house can be painted with one of the three colors: red, blue or green. | ||
//The cost of painting each house with a certain color is different. You have to paint all the houses such | ||
//that no two adjacent houses have the same color. | ||
|
||
//The cost of painting each house with a certain color is represented by a n x 3 cost matrix. For example, | ||
//costs[0][0] is the cost of painting house 0 with color red; costs[1][2] is the cost of painting house 1 | ||
//with color green, and so on... Find the minimum cost to paint all houses. | ||
|
||
//Note: | ||
//All costs are positive integers. | ||
|
||
class PaintHouse { | ||
public int minCost(int[][] costs) { | ||
if(costs == null || costs.length == 0) { | ||
return 0; | ||
} | ||
|
||
for(int i = 1; i < costs.length; i++) { | ||
costs[i][0] += Math.min(costs[i - 1][1], costs[i - 1][2]); | ||
costs[i][1] += Math.min(costs[i - 1][0], costs[i - 1][2]); | ||
costs[i][2] += Math.min(costs[i - 1][0], costs[i - 1][1]); | ||
} | ||
|
||
return Math.min(Math.min(costs[costs.length - 1][0], costs[costs.length - 1][1]), costs[costs.length - 1][2]); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
//Given a string, your task is to count how many palindromic substrings in this string. | ||
//The substrings with different start indexes or end indexes are counted as different substrings | ||
//even they consist of same characters. | ||
|
||
//Example 1: | ||
//Input: "abc" | ||
//Output: 3 | ||
//Explanation: Three palindromic strings: "a", "b", "c". | ||
//Example 2: | ||
//Input: "aaa" | ||
//Output: 6 | ||
//Explanation: Six palindromic strings: "a", "a", "a", "aa", "aa", "aaa". | ||
//Note: | ||
//The input string length won't exceed 1000. | ||
|
||
class PalindromicSubstrings { | ||
int result = 0; | ||
public int countSubstrings(String s) { | ||
if(s == null || s.length() == 0) { | ||
return 0; | ||
} | ||
|
||
for(int i = 0; i < s.length(); i++) { | ||
extendPalindrome(s, i, i); | ||
extendPalindrome(s, i, i + 1); | ||
} | ||
|
||
return result; | ||
} | ||
|
||
public void extendPalindrome(String s, int left, int right) { | ||
while(left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)) { | ||
result++; | ||
left--; | ||
right++; | ||
} | ||
} | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
//There are a row of n houses, each house can be painted with one of the three colors: red, blue or green. | ||
//The cost of painting each house with a certain color is different. You have to paint all the houses such | ||
//that no two adjacent houses have the same color. | ||
|
||
//The cost of painting each house with a certain color is represented by a n x 3 cost matrix. For example, | ||
//costs[0][0] is the cost of painting house 0 with color red; costs[1][2] is the cost of painting house 1 | ||
//with color green, and so on... Find the minimum cost to paint all houses. | ||
|
||
//Note: | ||
//All costs are positive integers. | ||
|
||
class PaintHouse { | ||
public int minCost(int[][] costs) { | ||
if(costs == null || costs.length == 0) { | ||
return 0; | ||
} | ||
|
||
for(int i = 1; i < costs.length; i++) { | ||
costs[i][0] += Math.min(costs[i - 1][1], costs[i - 1][2]); | ||
costs[i][1] += Math.min(costs[i - 1][0], costs[i - 1][2]); | ||
costs[i][2] += Math.min(costs[i - 1][0], costs[i - 1][1]); | ||
} | ||
|
||
return Math.min(Math.min(costs[costs.length - 1][0], costs[costs.length - 1][1]), costs[costs.length - 1][2]); | ||
} | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
//Given a string, your task is to count how many palindromic substrings in this string. | ||
//The substrings with different start indexes or end indexes are counted as different substrings | ||
//even they consist of same characters. | ||
|
||
//Example 1: | ||
//Input: "abc" | ||
//Output: 3 | ||
//Explanation: Three palindromic strings: "a", "b", "c". | ||
//Example 2: | ||
//Input: "aaa" | ||
//Output: 6 | ||
//Explanation: Six palindromic strings: "a", "a", "a", "aa", "aa", "aaa". | ||
//Note: | ||
//The input string length won't exceed 1000. | ||
|
||
class PalindromicSubstrings { | ||
int result = 0; | ||
public int countSubstrings(String s) { | ||
if(s == null || s.length() == 0) { | ||
return 0; | ||
} | ||
|
||
for(int i = 0; i < s.length(); i++) { | ||
extendPalindrome(s, i, i); | ||
extendPalindrome(s, i, i + 1); | ||
} | ||
|
||
return result; | ||
} | ||
|
||
public void extendPalindrome(String s, int left, int right) { | ||
while(left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)) { | ||
result++; | ||
left--; | ||
right++; | ||
} | ||
} | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
//Given a string, your task is to count how many palindromic substrings in this string. | ||
//The substrings with different start indexes or end indexes are counted as different substrings | ||
//even they consist of same characters. | ||
|
||
//Example 1: | ||
//Input: "abc" | ||
//Output: 3 | ||
//Explanation: Three palindromic strings: "a", "b", "c". | ||
//Example 2: | ||
//Input: "aaa" | ||
//Output: 6 | ||
//Explanation: Six palindromic strings: "a", "a", "a", "aa", "aa", "aaa". | ||
//Note: | ||
//The input string length won't exceed 1000. | ||
|
||
class PalindromicSubstrings { | ||
int result = 0; | ||
public int countSubstrings(String s) { | ||
if(s == null || s.length() == 0) { | ||
return 0; | ||
} | ||
|
||
for(int i = 0; i < s.length(); i++) { | ||
extendPalindrome(s, i, i); | ||
extendPalindrome(s, i, i + 1); | ||
} | ||
|
||
return result; | ||
} | ||
|
||
public void extendPalindrome(String s, int left, int right) { | ||
while(left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)) { | ||
result++; | ||
left--; | ||
right++; | ||
} | ||
} | ||
} |