Recursion

来源:互联网 发布:淘宝网优衣库羽绒服 编辑:程序博客网 时间:2024/05/13 03:50
package algorithm;import java.util.ArrayList;import java.util.Arrays;import java.util.Collection;import java.util.Comparator;import java.util.List;public class SortAndSearch {public int[] merge(int[] a , int[] b){int i = a.length-1;int j = b.length-1;int k = i + j + 1;int[] c = new int[k+1];while(i >= 0 && j >= 0){if(a[i] < b[j]){c[k--] = b[j--];}else{c[k--] = a[i--];}}while( j >= 0){c[k--] = b[j--];}while( i >= 0){c[k--] = a[i--];}return c;}public static class AnagramComparator implements Comparator<String> {public String sortChars(String s) {char[] content = s.toCharArray();Arrays.sort(content);return new String(content);}public int compare(String s1, String s2) {return sortChars(s1).compareTo(sortChars(s2));}}public int search(int a[], int start, int end, int x) {while (start <= end) {int m = (start + end) / 2;if (x == a[m]) {return m;} else if (a[start] <= a[m]) {if (x > a[m]) {start = m + 1;} else if (x >= a[start]) {end = m - 1;} else {start = m + 1;}} else if (x < a[m])end = m - 1;else if (x <= a[end])start = m + 1;elseend = m - 1;}return -1;}public int search(int a[], int x) {return search(a, 0, a.length - 1, x);}public int binarySearch(int[] a, int elem){int end = a.length - 1;int start = 0;while(start <= end){int mid = (end + start) / 2;if(a[mid] == elem){return mid;}else if(elem < a[mid]){end = mid - 1;}else{start = mid + 1;}}return -1;}public boolean findNumInMat(int[][] mat,int elem, int M, int N){int row = 0;int col = N-1;while(row < M && col >= 0){if(mat[row][col] == elem){return true;}else if(mat[row][col] > elem){col--;}else{row++;}}return false;}public String reverseAll(String str){char[] c = str.toCharArray();int i = 0;int j = c.length-1;char temp = ' ';while(i<=j){temp = c[j];c[j] = c[i];c[i] =temp;++i;--j;}return new String(c);}public String reverse(String str,int a){String result=reverseAll(str);result=reverseAll(result.substring(0, result.length()-a))+reverseAll(result.substring(result.length()-a,result.length()));return result;}public List<String> findPerms(String str){List<String> result = new ArrayList<String>();if(str==null){return null;}else if(str.length()==0){result.add("");return result;}char s = str.charAt(0);String remain = str.substring(1);List<String> subList = findPerms(remain);for(String ss : subList){result.addAll(getSubPerms(s,ss));}return result;}public boolean isWord(String word){List<String> dic = new ArrayList<String>();dic.add("good");dic.add("dad");dic.add("go");dic.add("odd");if(dic.contains(word)){return true;}else{return false;}}public String splitWord(String input){if(isWord(input)){return input;}else{for(int i = 0;i <input.length(); i++){String word = input.substring(0,i);if(!isWord(word)){continue;}else{String remain = input.substring(i,input.length());String newWord = splitWord(remain);if(null != newWord){return word + " " + newWord;}}}}return null;}private List<String> getSubPerms(char s, String ss) {List<String> result = new ArrayList<String>();if(ss.equalsIgnoreCase("")){result.add(s+"");}else{for(int i = 0;i <= ss.length(); i++){StringBuffer sb = new StringBuffer(ss);result.add(sb.insert(i, s).toString());}}return result;}public static void main(String[] args) {int[] a = {1,2,3,5,7,12,22,24,27,34,122,123,145,1333};//int[] b = {4,5,6};SortAndSearch s = new SortAndSearch();//int[] c = s.merge(a, b);//for(int i : c){//System.out.println(i);//}//String [] str = {"ad","ess","fd","gdd","hf","id","bg","cb","ds"};//Arrays.sort(str, new AnagramComparator());//for(String i : str){//System.out.println(i);//}int[] r = {15,16, 19, 20, 25, 1, 3, 4, 5, 7, 10, 14};//System.out.println(s.search(r, 5));System.out.println(s.binarySearch(a, 122));String str = "ABC";//System.out.println(s.findPerms(str));System.out.println(s.splitWord("gooddad"));}}


 

原创粉丝点击