Skip to content

Instantly share code, notes, and snippets.

View sinanduman's full-sized avatar

Sinan Duman sinanduman

View GitHub Profile
@sinanduman
sinanduman / Pascal.java
Created October 10, 2021 18:58
Pascal Triangle
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Pascal {
public static void main(String[] args) {
int numberOfRows = 8;
String blank = " ";
List<List<Integer>> listOfList = new ArrayList<>();
@sinanduman
sinanduman / LinkedListReverse.java
Created September 4, 2019 06:52
Singly LinkedList reverse algorithm using iterative and recursive methods.
package algo;
public class LinkedListReverse {
public static void main(String[] args) throws Exception {
Node<Integer> node = new Node(1);
node.next = new Node(2);
node.next.next = new Node(3);
node.next.next.next = new Node(4);
node.next.next.next.next = new Node(5);
@sinanduman
sinanduman / Score.java
Created March 21, 2017 04:51
Amazon find symbols score and total sum. X = multiply by 2 with previous score. + = adding previous 2 scores. Z = ignoring last score, as if it isn't thrown never.
package algo;
public class Score {
public static void main(String[] args) {
String[] nums = { "5", "-2", "4", "Z", "X", "9", "+", "+" }; // 27
// String[] nums = { "1", "2", "4", "Z"}; // 3
System.out.println(findScore(nums, nums.length));
}
@sinanduman
sinanduman / LookAndSay.scala
Created February 14, 2017 04:35
Scala solution for the algorithm explained in https://en.wikipedia.org/wiki/Look-and-say_sequence. But in this soluition, letter comes first, count comes after that.
package hackoranko
object LookAndSay {
def LookAndSay(start: String, n: Int): String = {
var first = start(0)
var tmpStart = new StringBuilder(start(0).toString() + "1")
for (t <- start.tail) {
@sinanduman
sinanduman / Roman.scala
Last active February 9, 2017 04:13
Lexical ordering Roman Numbers in King Titles
package algo
class Roman(kings: Array[String]) {
val basicLetters = Map(
'I' -> 1,
'V' -> 5,
'X' -> 10,
'L' -> 50,
'C' -> 100,
@sinanduman
sinanduman / Tree.java
Created April 29, 2016 05:12
Simple Linked List add and list implementation
package oasis;
public class Tree {
public Student head = null;
public void add(Integer number, String name, String surname) {
Student student = new Student(number, name, surname);
if (head == null) {
head = student;
} else {
@sinanduman
sinanduman / ClientService.java
Last active November 6, 2015 07:06
ServerSocket example using ThreadPool
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.util.Scanner;
public class ClientService {
Socket socket = null;
DataInputStream dis = null;
@sinanduman
sinanduman / fib-with-tail-rec.clj
Created October 7, 2015 17:48
Fibonacci numbers with tail recursion optimization
(defn fib
([n]
(fib n 0 1 0) )
([n start prev acc]
(if (= n start)
acc
(fib n (inc start) acc (+ prev acc ) )
)
)
)
@sinanduman
sinanduman / MiddleWordSwap.java
Created July 8, 2013 07:35
Change the middle word with last word.
package learn;
public class MiddleWordSwap {
public static void main(String[] args) {
char[] str = "Java is nice but Scala is even better :)".toCharArray();
char[] goal = "Java is nice but :) is even better Scala".toCharArray();
System.out.println("Original: '" + new String(str) + "'");
str = rearrange(str);
@sinanduman
sinanduman / MirrorsEnd.java
Created March 5, 2013 15:50
Given a string, look for a mirror image (backwards) string at both the beginning and end of the given string. In other words, zero or more characters at the very begining of the given string, and at the very end of the string in reverse order (possibly overlapping). For example, the string "abXYZba" has the mirror end "ab". mirrorEnds("abXYZba")…
package teach;
public class MirrorsEnd {
/**
* @param args
*/
public static void main(String[] args) {
String[] words = { "abXYZba", "abca", "aba", "Hi and iH", "123and then 321" };