字串--java面試題, 首個重複字串,二分查詢
阿新 • • 發佈:2019-01-29
對於一個字串,請設計一個高效演算法,找到第一次重複出現的字元。
給定一個字串(不一定全為字母)A及它的長度n。請返回第一個重複出現的字元。保證字串中有重複字元,字串的長度小於等於500。
測試樣例:"qywyer23tdd",11
返回:y
public class FirstRepeat { public char findFirstRepeat(String A, int n) { int tmp=0; char[] ch=A.toCharArray(); OK: for(int i=1;i<n;i++){ for(int j=0;j<i;j++){ if(ch[j]==ch[i]){ tmp=j; break OK; } } } return ch[tmp]; } }
2.題目描述
對於一個有序陣列,我們通常採用二分查詢的方式來定位某一元素,請編寫二分查詢的演算法,在陣列中查詢指定元素。
給定一個整數陣列A及它的大小n,同時給定要查詢的元素val,請返回它在陣列中的位置(從0開始),若不存在該元素,返回-1。若該元素出現多次,請返回第一次出現的位置。
測試樣例:[1,3,5,7,9],5,3
返回:1
public class BinarySearch { public int getPos(int[] A, int n, int val) { // write code here int min=0; int max=n-1; int mid=min+max/2; int tmp=-1; while(A[mid]!=val && min<=max){ if(val<A[mid]){ max=mid-1; }else{ min=mid+1; } mid=(max+min)/2; } if(A[mid]==val){ tmp=mid; if(mid>=1){//找第一個相等的值 while( mid-1>=0 && A[mid-1]==val){ tmp=mid-1; mid--; } } return tmp; }else{ return -1; } } }