LeetCode.ClimbStairs.Fibbonacci

task

Here we can recognize fibbonacci sequence

recursievely

public class Solution {
    public int ClimbStairs(int n) {

       if (n == 0)
         return 1;
  
       return n > 1 ? ClimbStairs(n - 1) + ClimbStairs(n -2) : n; 
    }
}

iteratievely

public class Solution {
    public int ClimbStairs(int n) {

        if (n <= 1)
          return 1;

        int first = 1;
        int second = 1;          

        for (int i = 2; i <= n; i++) { 
          int sum = first + second;
          first = second;
          second = sum;   
        }

        return second;
    }
}

Posted in Без рубрики | Comments Off on LeetCode.ClimbStairs.Fibbonacci

Leetcode.Roman-to-integer

Task

public class Solution {
    public int RomanToInt(string s) {
        var numbers = new Dictionary<char, int>();
        numbers.Add('I', 1);
        numbers.Add('V', 5);
        numbers.Add('X', 10);
        numbers.Add('L', 50);
        numbers.Add('C', 100);
        numbers.Add('D', 500);
        numbers.Add('M', 1000);        
        
        var numbersDiminished = new Dictionary<String, int>();
        numbersDiminished.Add("IV", 4);
        numbersDiminished.Add("IX", 9);
        numbersDiminished.Add("XL", 40);
        numbersDiminished.Add("XC", 90);
        numbersDiminished.Add("CD", 400);
        numbersDiminished.Add("CM", 900);

        int result = 0;
        int number = 0;

        for (int i = 0; i < s.Length; i++) {
            
            number = numbers[s[i]];
            

            if ((s[i] == 'I' || s[i] == 'X' || s[i] == 'C') && i != s.Length - 1 )   {
                  string maybeDiminished = s.Substring(i, 2);                  
                  
                  if (numbersDiminished.ContainsKey(maybeDiminished)) {
                      number = numbersDiminished[maybeDiminished];                 
                      i++;   
                  }
            }  
                        
            result += number;
        }

        return result;
    }
}
Posted in Без рубрики | Comments Off on Leetcode.Roman-to-integer

LeetCode.Palindrome-number

task

public class Solution {
    public bool IsPalindrome(int x) {
        var s = x.ToString();
        
        int i = 0;
        int j = s.Length - 1;
        while (i <= j) {
          if (s[i] != s[j]) 
          return false;          
          i++;
          j--;
          
        } 

        return true;
    }
}
Posted in Без рубрики | Comments Off on LeetCode.Palindrome-number

Java.DesignPatterns.Lightweight

lightweight example

moving out repeating heavy objects to the stucture outside

Posted in Без рубрики | Comments Off on Java.DesignPatterns.Lightweight

Java.DesignPatterns.Proxy

proxy example

Posted in Без рубрики | Comments Off on Java.DesignPatterns.Proxy

Java.DesignPatterns.Facade

facade example

Posted in Без рубрики | Comments Off on Java.DesignPatterns.Facade

Java.DesignPatterns.Composite

composite example

Posted in Без рубрики | Comments Off on Java.DesignPatterns.Composite

Java.DesignPatterns.Bridge

the idea in separation of hierarchies of classes and composing them in one class container

from gof, there is a concept of abstraction and implementation, abstraction like a container for implementations that composed to the abstraction, in below example abstraction is remote control, and device is implementations

my bridge example

allows inherit different chains separately

Posted in Без рубрики | Comments Off on Java.DesignPatterns.Bridge

Java. Strange OOP thing

public class Main {
    public static void main(String[] args) {

        Cat cat = new Cat();
        System.out.println(cat.getName()); // returns "Animal". Why ????

    }
}

class Animal {
    private String name = "Animal";

    public String getName() {
        return this.name;
    }
}

class Cat extends Animal {
    private String name = "Cat";

}
Posted in Без рубрики | Comments Off on Java. Strange OOP thing

Java.Classpath

Stack

Posted in Без рубрики | Comments Off on Java.Classpath