From 53563f05cea5b624ce80a984593ca392be61b540 Mon Sep 17 00:00:00 2001
From: YuCheng Hu
Date: Sat, 29 Dec 2018 00:36:55 -0500
Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20Wayfair=20=E6=B5=8B?=
=?UTF-8?q?=E8=AF=95=E7=B1=BB?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../codebank/interview/tests/WayfairTest.java | 293 ++++++++++++++++++
1 file changed, 293 insertions(+)
create mode 100644 src/test/java/com/ossez/codebank/interview/tests/WayfairTest.java
diff --git a/src/test/java/com/ossez/codebank/interview/tests/WayfairTest.java b/src/test/java/com/ossez/codebank/interview/tests/WayfairTest.java
new file mode 100644
index 0000000..49c9996
--- /dev/null
+++ b/src/test/java/com/ossez/codebank/interview/tests/WayfairTest.java
@@ -0,0 +1,293 @@
+package com.ossez.codebank.interview.tests;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.TreeSet;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.management.ListenerNotFoundException;
+
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.ossez.codebank.algorithm.models.ListNode;
+
+/**
+ *
+ * @author YuCheng
+ *
+ */
+public class WayfairTest {
+
+ private final static Logger logger = LoggerFactory.getLogger(WayfairTest.class);
+
+ /**
+ * 35 https://www.lintcode.com/problem/reverse-linked-list/description
+ */
+ @Test
+ public void test0035Reverse() {
+ // INIT LINKED LIST
+ ListNode head = new ListNode(1);
+ head.next = new ListNode(2);
+ head.next.next = new ListNode(3);
+
+ // CHECK BEFORE
+ System.out.println(head.val);
+ System.out.println(head.next.val);
+ System.out.println(head.next.next.val);
+
+ // REVERSE
+ ListNode prev = null;
+ while (head != null) {
+ ListNode temp = head.next;
+ head.next = prev;
+ prev = head;
+ head = temp;
+ }
+
+ // CHECK AFTER
+ System.out.println(prev.val);
+ System.out.println(prev.next.val);
+ System.out.println(prev.next.next.val);
+ }
+
+ /**
+ * 1480 https://www.lintcode.com/problem/dot-product/description
+ */
+ @Test
+ public void test0044minSubArray() {
+
+ List nums = new ArrayList();
+ nums.add(1);
+ nums.add(1);
+
+ int min_ending_here = 0;
+ int retStatus = 0;
+
+ for (int i = 0; i < nums.size(); i++) {
+ if (min_ending_here > 0) {
+ min_ending_here = nums.get(i);
+ } else {
+ min_ending_here += nums.get(i);
+ }
+ retStatus = Math.min(retStatus, min_ending_here);
+ }
+
+ System.out.println(retStatus);
+
+ }
+
+ /**
+ * 53 https://www.lintcode.com/problem/reverse-words-in-a-string/description
+ */
+ @Test
+ public void test0053ReverseWords() {
+
+ String s = " Life doesn't always give us the joys we want.";
+
+ String retStr = "";
+ String[] inStr = s.split(" ");
+
+ for (int i = inStr.length - 1; i >= 0; i--) {
+ String cStr = inStr[i].trim();
+ if (!cStr.isEmpty()) {
+ retStr = retStr + " " + cStr;
+ }
+ }
+ retStr = retStr.trim();
+ System.out.println(retStr);
+ // return retStr;
+ }
+
+ /**
+ * 56 https://www.lintcode.com/problem/two-sum/description
+ */
+ @Test
+ public void test0056TwoSum() {
+ int[] numbers = { 2, 7, 11, 15 };
+ int target = 9;
+
+ int[] retArray = new int[2];
+
+ for (int i = 0; i < numbers.length; i++) {
+ int intA = numbers[i];
+ int intB = 0;
+
+ for (int j = 1 + i; j < numbers.length; j++) {
+ intB = numbers[j];
+ // SUM CHECK
+ if (target == intA + intB && i < j) {
+ retArray[0] = i;
+ retArray[1] = j;
+ break;
+ }
+ }
+ }
+
+ System.out.println(Arrays.toString(retArray));
+ }
+
+ /**
+ * 209 https://www.lintcode.com/problem/first-unique-character-in-a-string
+ */
+ @Test
+ public void test0209FirstUniqChar() {
+ String str = "ddjdz";
+
+ char retStatus = 0;
+
+ // LOOP CHECK
+ for (int i = 0; i < 30; i++) {
+ char c = str.charAt(0);
+ if (str.indexOf(Character.toString(c)) == str.lastIndexOf(Character.toString(c))) {
+ retStatus = c;
+ break;
+ }
+ str = str.replaceAll(Character.toString(c), "");
+ }
+
+ System.out.println("" + retStatus);
+ }
+
+ /**
+ * 411
+ *
+ *
+ *
+ *
+ *
+ */
+ @Test
+ public void test0411GrayCode() {
+ int n = 2;
+
+ List retArray = new ArrayList<>();
+
+ if (n == 0) {
+ retArray.add(0);
+ }
+
+ for (int i = 0; i < (2 << (n - 1)); i++) {
+ int g = i ^ (i / 2);
+ retArray.add(g);
+ }
+
+ System.out.println(retArray);
+ }
+
+ /**
+ * 1480 https://www.lintcode.com/problem/dot-product/description
+ */
+ @Test
+ public void test0423IsValidParentheses() {
+ String s = "([)]";
+
+ boolean retStatus = false;
+ for (int i = 0; i < 3; i++) {
+ s = s.replace("()", "");
+ s = s.replace("{}", "");
+ s = s.replace("[]", "");
+
+ if (s.length() == 0) {
+ retStatus = true;
+ break;
+ }
+ }
+
+ System.out.println(retStatus);
+
+ }
+
+ /**
+ * 646 https://www.lintcode.com/problem/first-position-unique-character/description
+ */
+ @Test
+ public void test0646FirstUniqChar() {
+ String s = "saau";
+
+ int retStatus = -1;
+ boolean breakLoop = false;
+
+ int[] iArray = new int[256];
+
+ // NULL CHECK
+ if (s == null || s.length() == 0) {
+ retStatus = -1;
+ }
+
+ // LOOP CHECK
+ for (char c : s.toCharArray()) {
+ iArray[c]++;
+ }
+ for (int i = 0; i < s.length(); i++) {
+ if (iArray[s.charAt(i)] == 1) {
+ retStatus = i;
+ breakLoop = true;
+ break;
+ }
+ }
+
+ // LOOP BREAK CHECK
+ if (!breakLoop) {
+ retStatus = -1;
+ }
+
+ System.out.println(retStatus);
+ }
+
+ /**
+ * 767 https://www.lintcode.com/problem/reverse-array/description
+ */
+ @Test
+ public void test0767ReverseArray() {
+ int[] nums = { 1, 2, 3, 4, 5, 6, 7 };
+
+ for (int i = 0; i < nums.length / 2; i++) {
+ int tmp = nums[i];
+ nums[i] = nums[nums.length - 1 - i];
+ nums[nums.length - 1 - i] = tmp;
+ }
+
+ System.out.println(Arrays.toString(nums));
+
+ }
+
+ /**
+ * 1480 https://www.lintcode.com/problem/dot-product/description
+ */
+ @Test
+ public void test1377findSubstring() {
+ String str = "";
+ int k = 5;
+
+ HashSet strSet = new HashSet();
+
+ for (int i = 0; i <= str.length() - k; i++) {
+ String subStr = str.substring(i, i + k);
+
+ String pattern = ".*(.).*\\1.*";
+
+ Pattern r = Pattern.compile(pattern);
+
+ Matcher m = r.matcher(subStr);
+ if (!m.find()) {
+ strSet.add(subStr);
+ }
+
+ }
+
+ System.out.println(strSet.size());
+ }
+
+}