diff --git a/README.md b/README.md
index 74e9359..1ea9ebc 100644
--- a/README.md
+++ b/README.md
@@ -99,7 +99,10 @@ Given two integers, write a function to sum the numbers without using any arithm
* [Reverse Stack](http://www.byte-by-byte.com/reversestack/)
Given a stack, reverse the items without creating any additional data structures.
-* [Swap Variables](http://www.byte-by-byte.com/swapvariables/)
+* [Swap Variables](http://www.byte-by-byte.com/swapvariables/)
+([C++](https://github.com/samgh/Byte-by-Byte-Solutions/blob/master/cpp/SwapVariables.cpp))
+([Java](https://github.com/samgh/Byte-by-Byte-Solutions/blob/master/java/SwapVariables.java))
+([Python](https://github.com/samgh/Byte-by-Byte-Solutions/blob/master/python/SwapVariables.py))
Given two integers, write a function that swaps them without using any temporary variables.
* [Matrix Search](http://www.byte-by-byte.com/matrixsearch/)
diff --git a/cpp/SwapVariables.cpp b/cpp/SwapVariables.cpp
new file mode 100644
index 0000000..4c4b3e1
--- /dev/null
+++ b/cpp/SwapVariables.cpp
@@ -0,0 +1,74 @@
+/*
+* Title: Swap Variables
+*
+* Given two integers, write a function that swaps them without using any
+* temporary variables.
+*
+* Execution: g++ SwapVariables.cpp -o SwapVariables
+*
+* For more details, check out http://www.byte-by-byte.com/swapvariables
+*/
+
+#include
+#include
+
+using namespace std;
+
+vector swap_1(int x, int y) {
+ vector vars;
+
+ x = x + y;
+ y = x - y;
+ x = x - y;
+
+ vars.push_back(x);
+ vars.push_back(y);
+
+ return vars;
+}
+
+vector swap_2(int x, int y) {
+ vector vars;
+
+ x = x ^ y;
+ y = x ^ y;
+ x = x ^ y;
+
+ vars.push_back(x);
+ vars.push_back(y);
+ return vars;
+}
+
+int main() {
+ vector test_1 = swap_1(1, 2);
+ assert(test_1[0] == 2);
+ assert(test_1[1] == 1);
+ cout << "Swapped (1,2) with (2,1)" << endl;
+
+ vector test_2 = swap_1(5, 5);
+ assert(test_2[0] == 5);
+ assert(test_2[1] == 5);
+ cout << "Swapped (5,5) with (5,5)" << endl;
+
+ vector test_3 = swap_1(-1, 40);
+ assert(test_3[0] == 40);
+ assert(test_3[1] == -1);
+ cout << "Swapped (40,-1) with (-1,40)" << endl;
+
+ vector test_4 = swap_2(1, 2);
+ assert(test_4[0] == 2);
+ assert(test_4[1] == 1);
+ cout << "Swapped (1,2) with (2,1)" << endl;
+
+ vector test_5 = swap_2(5, 5);
+ assert(test_5[0] == 5);
+ assert(test_5[1] == 5);
+ cout << "Swapped (5,5) with (5,5)" << endl;
+
+ vector test_6 = swap_2(-1, 40);
+ assert(test_6[0] == 40);
+ assert(test_6[1] == -1);
+ cout << "Swapped (40,-1) with (-1,40)" << endl;
+
+ return 0;
+}
diff --git a/java/SwapVariables.java b/java/SwapVariables.java
new file mode 100644
index 0000000..36fb91b
--- /dev/null
+++ b/java/SwapVariables.java
@@ -0,0 +1,62 @@
+/*
+* Title: Swap Variables
+*
+* Given two integers, write a function that swaps them without using any temporary variables.
+*
+* Execution: javac SwapVariables.java && java SwapVariables
+
+* For more details, check out http://www.byte-by-byte.com/swapvariables
+*/
+
+public class SwapVariables {
+ public static int[] swap_1(int x, int y) {
+ x = x + y;
+ y = x - y;
+ x = x - y;
+
+ int ar[] = new int[2];
+ ar[0] = x;
+ ar[1] = y;
+ return ar;
+ }
+
+ public static int[] swap_2(int x, int y) {
+ x = x ^ y;
+ y = x ^ y;
+ x = x ^ y;
+
+ int ar[] = new int[2];
+ ar[0] = x;
+ ar[1] = y;
+ return ar;
+ }
+
+ // Sample test cases
+ public static void main(String[] args) {
+ int ar_1[] = swap_1(1, 2);
+ assert ar_1[0] == 2 && ar_1[1] == 1:
+ "Swapped (1,2) with (2,1)";
+
+ int ar_2[] = swap_1(5, 5);
+ assert ar_2[0] == 5 && ar_2[1] == 5:
+ "Swapped (5,5) with (5,5)";
+
+ int ar_3[] = swap_1(-1, 40);
+ assert ar_3[0] == 40 && ar_3[1] == -1:
+ "Swaped(-1,40) with (40,-1)";
+
+ int ar_4[] = swap_2(1, 2);
+ assert ar_4[0] == 2 && ar_4[1] == 1:
+ "Swapped (1,2) with (2,1)";
+
+ int ar_5[] = swap_2(5, 5);
+ assert ar_5[0] == 5 && ar_5[1] == 5:
+ "Swapped (5,5) with (5,5)";
+
+ int ar_6[] = swap_2(-1, 40);
+ assert ar_6[0] == 40 && ar_6[1] == -1:
+ "Swapped(-1,40) with (40,-1)";
+
+ System.out.println("Passed all test cases");
+ }
+}
diff --git a/python/SwapVariables.py b/python/SwapVariables.py
new file mode 100644
index 0000000..a2081b7
--- /dev/null
+++ b/python/SwapVariables.py
@@ -0,0 +1,56 @@
+"""
+Title: Swap Variables
+
+Given two integers, write a function that swaps them without using any
+temporary variables.
+
+Execution: python SwapVariables.py
+
+For more details, check out http://www.byte-by-byte.com/swapvariables
+
+"""
+import unittest
+
+
+def swap_1(x: int, y: int):
+ x = x + y
+ y = x - y
+ x = x - y
+ return x, y
+
+
+def swap_2(x: int, y: int):
+ x = x ^ y
+ y = x ^ y
+ x = x ^ y
+ return x, y
+
+
+class TestSwap(unittest.TestCase):
+ def test_swap_1_1_2(self):
+ self.assertEqual(swap_1(1, 2), (2, 1))
+ print("Swapped (1, 2) with (2, 1)")
+
+ def test_swap_1_5_5(self):
+ self.assertEqual(swap_1(5, 5), (5, 5))
+ print("Swapped (5, 5) with (5, 5)")
+
+ def test_swap_1_neg1_40(self):
+ self.assertEqual(swap_1(-1, 40), (40, -1))
+ print("Swapped (-1, 40) with (40, -1)")
+
+ def test_swap_2_1_2(self):
+ self.assertEqual(swap_2(1, 2), (2, 1))
+ print("Swapped (1, 2) with (2, 1)")
+
+ def test_swap_2_5_5(self):
+ self.assertEqual(swap_2(5, 5), (5, 5))
+ print("Swapped (5, 5) with (5, 5)")
+
+ def test_swap_2_neg1_40(self):
+ self.assertEqual(swap_2(-1, 40), (40, -1))
+ print("Swapped (-1, 40) with (40, -1)")
+
+
+if __name__ == '__main__':
+ unittest.main()