diff --git a/src/main/java/com/fancv/MyTest.java b/src/main/java/com/fancv/MyTest.java new file mode 100644 index 0000000..adf26c9 --- /dev/null +++ b/src/main/java/com/fancv/MyTest.java @@ -0,0 +1,49 @@ +package com.fancv; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +public class MyTest { + public static void main(String[] args) { + List mydtoList= new ArrayList<>(2); + mydto a = new mydto(); + a.setId(102L); + a.setName("a"); + + mydto b = new mydto(); + b.setId(101L); + b.setName("a"); + mydtoList.add(a); + mydtoList.add(b); + + Map d =mydtoList.stream().collect(Collectors.toMap(mydto::getName,mydto::getId)); + } + +} + +class mydto { + + private String name; + + private Long id; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + +} + diff --git a/src/main/java/com/fancv/leetCode/String/LongestPalindrome_5.java b/src/main/java/com/fancv/leetCode/String/LongestPalindrome_5.java new file mode 100644 index 0000000..358dfea --- /dev/null +++ b/src/main/java/com/fancv/leetCode/String/LongestPalindrome_5.java @@ -0,0 +1,34 @@ +package com.fancv.leetCode.String; + +public class LongestPalindrome_5 { + + public static void main(String[] args) { + System.out.println(longestPalindrome("cbbfddfddddffgdsgsdfgsdffffdddffffgsdfgsdgsdgsdff")); + } + + public static String longestPalindrome(String s) { + + int l = s.length(); + String sub1 = null; + for (; l > 0; l--) { + for (int j = 0; j + l <= s.length(); j++) { + sub1 = s.substring(j, l + j); + if (isPalindromic(sub1)) { + return sub1; + } + } + } + return null; + } + + public static boolean isPalindromic(String s) { + int len = s.length(); + for (int i = 0; i < len / 2; i++) { + if (s.charAt(i) != s.charAt(len - i - 1)) { + return false; + } + } + return true; + } + +} diff --git a/src/main/java/com/fancv/leetCode/String/letterCombinations.java b/src/main/java/com/fancv/leetCode/String/letterCombinations.java new file mode 100644 index 0000000..3780d47 --- /dev/null +++ b/src/main/java/com/fancv/leetCode/String/letterCombinations.java @@ -0,0 +1,79 @@ +package com.fancv.leetCode.String; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 17 https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/ + */ +public class letterCombinations { + public static List letterCombinations(String digits) { + List r = new ArrayList<>(); + if (null == digits || digits.isEmpty()) { + return r; + } + + Map h = new HashMap<>(16); + h.put('2', "abc"); + h.put('3', "def"); + h.put('4', "ghi"); + h.put('5', "jkl"); + h.put('6', "mno"); + h.put('7', "pqrs"); + h.put('8', "puv"); + h.put('9', "wxyz"); + + if (digits.length() == 1) { + String t = h.get(digits.charAt(0)); + for (char c : t.toCharArray()) { + r.add(Character.toString(c)); + } + return r; + } + if (digits.length() == 2) { + for (char a1 : h.get(digits.charAt(0)).toCharArray()) { + for (char a2 : h.get(digits.charAt(1)).toCharArray()) { + r.add(Character.toString(a1) + a2); + } + } + + return r; + } + if (digits.length() == 3) { + for (char a1 : h.get(digits.charAt(0)).toCharArray()) { + for (char a2 : h.get(digits.charAt(1)).toCharArray()) { + for (char a3 : h.get(digits.charAt(2)).toCharArray()) { + r.add(Character.toString(a1) + a2+a3); + } + } + } + + return r; + } + if (digits.length() == 4) { + for (char a1 : h.get(digits.charAt(0)).toCharArray()) { + for (char a2 : h.get(digits.charAt(1)).toCharArray()) { + for (char a3 : h.get(digits.charAt(2)).toCharArray()) { + for (char a4 : h.get(digits.charAt(3)).toCharArray()) { + r.add(Character.toString(a1) + a2+a3+a4); + } + } + } + } + + return r; + } + return r; + + + } + + public static void main(String[] args) { + String d = "23"; + + System.out.println(letterCombinations(d)); + } + +} diff --git a/src/main/java/com/fancv/leetCode/String/percentageLetter.java b/src/main/java/com/fancv/leetCode/String/percentageLetter.java new file mode 100644 index 0000000..b6304d0 --- /dev/null +++ b/src/main/java/com/fancv/leetCode/String/percentageLetter.java @@ -0,0 +1,64 @@ +package com.fancv.leetCode.String; + +import java.text.DecimalFormat; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; + +public class percentageLetter { + + public static int percentageLetter(String s, char letter) { + + Long l = s.chars().count(); + Long q = s.chars().filter(c-> c==letter).count(); + + return (int)(100*(float)q/l); + + + } + + public static void main(String[] args) { + + Boolean s = wordPattern("abba","dog dog dog dog"); + System.out.println(s); + } + + public static boolean wordPattern(String pattern, String s) { + + int[] p = pattern.chars().toArray(); + String[] ss = s.split(" "); + + if(p.length!=ss.length){ + return false; + } + + HashMap map = new HashMap<>(); + HashMap map2 = new HashMap<>(); + + for(int i=0;i stack = new Stack<>(); + int num = 0; + char flag = '+'; + for (int i = 0; i < l; i++) { + if (Character.isDigit(chars[i])) { + num = num * 10 + (chars[i]-'0'); + } + if (!Character.isDigit(chars[i]) || i == s.length()-1) { + switch (flag) { + case '+': + stack.add(num); + break; + case '-': + stack.add(-num); + break; + case '*': + stack.add(stack.pop() * num); + break; + case '/': + stack.add(stack.pop() / num); + break; + } + flag = s.charAt(i); + num = 0; + + } + + + } + num = 0; + while (!stack.empty()) { + num = num + stack.pop(); + } + + return num; + } + + + +} diff --git a/src/main/java/com/fancv/leetCode/arrays/DivingBoard.java b/src/main/java/com/fancv/leetCode/arrays/DivingBoard.java new file mode 100644 index 0000000..837946a --- /dev/null +++ b/src/main/java/com/fancv/leetCode/arrays/DivingBoard.java @@ -0,0 +1,27 @@ +package com.fancv.leetCode.arrays; + +public class DivingBoard { + + public static void main(String[] args) { + + System.out.println(divingBoard(1, 1, 123)); + } + + public static int[] divingBoard(int shorter, int longer, int k) { + + + if (k == 0) { + return new int[k]; + } + if (shorter == longer) { + return new int[]{shorter * k}; + } + int[] r = new int[k + 1]; + for (int i = 0; i < k + 1; i++) { + + r[i] = shorter * (k - i) + longer * i; + } + return r; + + } +} diff --git a/src/main/java/com/fancv/leetCode/arrays/GetIndex724.java b/src/main/java/com/fancv/leetCode/arrays/GetIndex724.java new file mode 100644 index 0000000..8f85875 --- /dev/null +++ b/src/main/java/com/fancv/leetCode/arrays/GetIndex724.java @@ -0,0 +1,22 @@ +package com.fancv.leetCode.arrays; + +public class GetIndex724 { + + public static void main(String[] args) { + System.out.println(pivotIndex(new int[]{2, 1 - 1})); + } + + public static int pivotIndex(int[] nums) { + int total = nums.length; + int left = 0; + for (int i = 0; i < nums.length; i++) { + + if (left * 2 == total - nums[i] && i != nums.length - 1) { + return i; + } + left = left + nums[i]; + + } + return -1; + } +} diff --git a/src/main/java/com/fancv/sort/bubbleSort.java b/src/main/java/com/fancv/sort/bubbleSort.java index b49fc3c..020a661 100644 --- a/src/main/java/com/fancv/sort/bubbleSort.java +++ b/src/main/java/com/fancv/sort/bubbleSort.java @@ -3,6 +3,8 @@ /** *冒泡排序 * + * 双循环,每次最大的数据冒到最后边 + * 复杂度 o(n2) * 外循环 * 内循环 * @@ -11,7 +13,8 @@ public class bubbleSort { public static void main(String args[]) { System.out.println("冒泡排序"); - int[] arr = {1, 9, 3, 2, 8, 4, 7};//创建数组 + + int[] arr = {91, 9, 3, 2, 8, 4, 7,4};//创建数组 System.out.println("排序前"); showArr(arr);//打印显示排序前 //循环实现冒泡排序 @@ -24,6 +27,7 @@ public static void main(String args[]) { } } + showArr(arr); } System.out.println("排序后"); showArr(arr); diff --git a/src/main/java/com/fancv/sort/newBubbleSort.java b/src/main/java/com/fancv/sort/newBubbleSort.java new file mode 100644 index 0000000..88d2d01 --- /dev/null +++ b/src/main/java/com/fancv/sort/newBubbleSort.java @@ -0,0 +1,31 @@ +package com.fancv.sort; + +import java.util.Arrays; + +public class newBubbleSort { + + public static void main(String[] args) { + System.out.println("盲写冒泡排序"); + + int[] list = {11, 3, 5, 4, 3, 2, 5, 67, 34, 23, 33}; + sort(list); + + System.out.println(Arrays.stream(list).toArray()); + + } + + static void sort(int[] list) { + + for (int i = 0; i < list.length - 1; i++) { + for (int j = 0; j < list.length - 1 - i; j++) { + if (list[j] > list[j + 1]) { + int temp = list[j]; + list[j] = list[j + 1]; + list[j + 1] = temp; + } + } + + } + + } +} diff --git a/src/main/java/com/fancv/stocks/TradingVolume.java b/src/main/java/com/fancv/stocks/TradingVolume.java new file mode 100644 index 0000000..0ef5bc2 --- /dev/null +++ b/src/main/java/com/fancv/stocks/TradingVolume.java @@ -0,0 +1,11 @@ +package com.fancv.stocks; + +/** + * 计算股票交易量 + * 股票活跃度的指标 + * 每天交易量的趋势 + */ +public class TradingVolume { + + +} diff --git a/src/main/java/com/fancv/stringLight/ExcelNames_168.java b/src/main/java/com/fancv/stringLight/ExcelNames_168.java new file mode 100644 index 0000000..e403be4 --- /dev/null +++ b/src/main/java/com/fancv/stringLight/ExcelNames_168.java @@ -0,0 +1,78 @@ +package com.fancv.stringLight; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class ExcelNames_168 { + + public static void main(String[] args) { + System.out.println(convertToTitle(1)); + } + + + public static String convertToTitle(int columnNumber) { + + Map integerStringMap = new HashMap<>(26); + integerStringMap.put(1, "A"); + integerStringMap.put(2, "B"); + integerStringMap.put(3, "C"); + integerStringMap.put(4, "D"); + integerStringMap.put(5, "E"); + integerStringMap.put(6, "F"); + integerStringMap.put(7, "G"); + integerStringMap.put(8, "H"); + integerStringMap.put(9, "I"); + integerStringMap.put(10, "J"); + integerStringMap.put(11, "K"); + integerStringMap.put(12, "L"); + integerStringMap.put(13, "M"); + integerStringMap.put(14, "N"); + integerStringMap.put(15, "O"); + integerStringMap.put(16, "P"); + integerStringMap.put(17, "Q"); + integerStringMap.put(18, "R"); + integerStringMap.put(19, "S"); + integerStringMap.put(20, "T"); + integerStringMap.put(21, "U"); + integerStringMap.put(22, "V"); + integerStringMap.put(23, "W"); + integerStringMap.put(24, "X"); + integerStringMap.put(25, "Y"); + integerStringMap.put(26, "Z"); + + List d = new ArrayList<>(24); + operation(columnNumber, d); + + StringBuilder stringBuilder = new StringBuilder(); + for (int i = d.size(); i > 0; i--) { + stringBuilder.append(integerStringMap.get(d.get(i - 1))); + } + + return stringBuilder.toString(); + } + + public static void operation(int i, List r) { + if (i > 26) { + int k = i % 26; + if (k == 0) { + r.add(26); + i = i-26; + } else { + r.add(k); + } + i = i / 26; + if (i > 26) { + operation(i, r); + } else { + r.add(i); + } + + }else { + r.add(i); + } + + + } +} diff --git a/src/main/java/com/fancv/stringLight/LastWordLength_58.java b/src/main/java/com/fancv/stringLight/LastWordLength_58.java new file mode 100644 index 0000000..e612bf8 --- /dev/null +++ b/src/main/java/com/fancv/stringLight/LastWordLength_58.java @@ -0,0 +1,51 @@ +package com.fancv.stringLight; + +import java.util.Arrays; + +public class LastWordLength_58 { + + public static void main(String[] args) { + LastWordLength_58 lastWordLength_58 = new LastWordLength_58(); + + System.out.println(lastWordLength_58.lengthOfLastWord("dhfjd sdflka moon")); + System.out.println(lastWordLength_58.CheckPermutation("moongf ff", "mnff ofgo")); + + } + + public int lengthOfLastWord(String s) { + char[] chars = s.toCharArray(); + int r = 0; + for (int j = chars.length; j > 0; j--) { + if (r == 0 && chars[j - 1] == 32) { + continue; + } + if (chars[j - 1] != 32) { + r++; + } else { + break; + } + } + return r; + } + + public boolean CheckPermutation(String s1, String s2) { + + char[] char1 = s1.toCharArray(); + char[] char2 = s2.toCharArray(); + if (char1.length != char2.length) { + return Boolean.FALSE; + } + Arrays.sort(char1); + Arrays.sort(char2); + for (int i = 0; i < char1.length; i++) { + + if (char1[i] == char2[i]) { + continue; + } else { + return Boolean.FALSE; + } + } + + return Boolean.TRUE; + } +}