0% ont trouvé ce document utile (0 vote)
3 vues38 pages

DSA Codes

Le document présente une série de solutions de code pour des problèmes courants liés aux tableaux, allant de la recherche d'éléments à la manipulation de tableaux. Chaque solution est fournie sous forme de méthode statique en Java, illustrant des algorithmes tels que la recherche binaire, la rotation de tableaux et le calcul de la somme maximale de sous-tableaux. Les méthodes incluent également des techniques pour gérer des cas particuliers comme les doublons et les éléments manquants.

Transféré par

Mangesh Shiudkar
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
3 vues38 pages

DSA Codes

Le document présente une série de solutions de code pour des problèmes courants liés aux tableaux, allant de la recherche d'éléments à la manipulation de tableaux. Chaque solution est fournie sous forme de méthode statique en Java, illustrant des algorithmes tels que la recherche binaire, la rotation de tableaux et le calcul de la somme maximale de sous-tableaux. Les méthodes incluent également des techniques pour gérer des cas particuliers comme les doublons et les éléments manquants.

Transféré par

Mangesh Shiudkar
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

DSA Codes

🔢 ARRAY QUESTIONS (1–60)

1. Reverse an Array

static void reverse(int[] a){

int l=0,r=[Link]-1;

while(l<r){

int t=a[l]; a[l]=a[r]; a[r]=t;

l++; r--;

2. Find Maximum Element

static int max(int[] a){

int m=a[0];

for(int x:a) m=[Link](m,x);

return m;

3. Find Minimum Element

static int min(int[] a){

int m=a[0];

for(int x:a) m=[Link](m,x);

return m;

4. Second Largest Element

static int secondLargest(int[] a){

int max=Integer.MIN_VALUE, sec=Integer.MIN_VALUE;

for(int x:a){

if(x>max){ sec=max; max=x; }

else if(x>sec && x!=max) sec=x;


}

return sec;

5. Check if Array is Sorted

static boolean isSorted(int[] a){

for(int i=1;i<[Link];i++)

if(a[i]<a[i-1]) return false;

return true;

6. Remove Duplicates (Sorted Array)

static int removeDuplicates(int[] a){

int i=0;

for(int j=1;j<[Link];j++)

if(a[j]!=a[i]) a[++i]=a[j];

return i+1;

7. Rotate Array by K

static void rotate(int[] a,int k){

k%=[Link];

reverse(a,0,[Link]-1);

reverse(a,0,k-1);

reverse(a,k,[Link]-1);

static void reverse(int[] a,int l,int r){

while(l<r){

int t=a[l]; a[l]=a[r]; a[r]=t;

l++; r--;

}
}

8. Move Zeros to End

static void moveZeros(int[] a){

int j=0;

for(int i=0;i<[Link];i++)

if(a[i]!=0) a[j++]=a[i];

while(j<[Link]) a[j++]=0;

9. Missing Number (1–N)

static int missing(int[] a,int n){

int sum=n*(n+1)/2;

for(int x:a) sum-=x;

return sum;

10. Find Duplicate Element

static int findDuplicate(int[] a){

HashSet<Integer> set=new HashSet<>();

for(int x:a)

if(![Link](x)) return x;

return -1;

11. Two Sum

static int[] twoSum(int[] a,int t){

HashMap<Integer,Integer> map=new HashMap<>();

for(int i=0;i<[Link];i++){

if([Link](t-a[i]))

return new int[]{[Link](t-a[i]),i};

[Link](a[i],i);
}

return new int[]{};

12. Majority Element

static int majority(int[] a){

int cnt=0,cand=0;

for(int x:a){

if(cnt==0) cand=x;

cnt += (x==cand)?1:-1;

return cand;

13. Maximum Subarray Sum (Kadane)

static int maxSubArray(int[] a){

int max=a[0], cur=a[0];

for(int i=1;i<[Link];i++){

cur=[Link](a[i],cur+a[i]);

max=[Link](max,cur);

return max;

14. Check Subarray with Given Sum

static boolean subarraySum(int[] a,int k){

HashSet<Integer> set=new HashSet<>();

int sum=0; [Link](0);

for(int x:a){

sum+=x;

if([Link](sum-k)) return true;


[Link](sum);

return false;

15. Product of Array Except Self

static int[] productExceptSelf(int[] a){

int n=[Link];

int[] res=new int[n];

int left=1;

for(int i=0;i<n;i++){

res[i]=left;

left*=a[i];

int right=1;

for(int i=n-1;i>=0;i--){

res[i]*=right;

right*=a[i];

return res;

16. Count Frequency of Elements

static Map<Integer,Integer> frequency(int[] a){

Map<Integer,Integer> map=new HashMap<>();

for(int x:a) [Link](x,[Link](x,0)+1);

return map;

17. Intersection of Two Arrays

static int[] intersection(int[] a,int[] b){


HashSet<Integer> set=new HashSet<>();

for(int x:a) [Link](x);

ArrayList<Integer> res=new ArrayList<>();

for(int x:b)

if([Link](x)) [Link](x);

return [Link]().mapToInt(i->i).toArray();

18. Union of Two Arrays

static Set<Integer> union(int[] a,int[] b){

Set<Integer> set=new HashSet<>();

for(int x:a) [Link](x);

for(int x:b) [Link](x);

return set;

19. Rearrange Positive & Negative

static void rearrange(int[] a){

int j=0;

for(int i=0;i<[Link];i++)

if(a[i]<0){

int t=a[i]; a[i]=a[j]; a[j]=t;

j++;

20. Find Peak Element

static int peak(int[] a){

for(int i=1;i<[Link]-1;i++)

if(a[i]>a[i-1] && a[i]>a[i+1]) return a[i];

return -1;
}

21. Buy & Sell Stock (Max Profit – Single Transaction)

static int maxProfit(int[] prices){

int min=prices[0], profit=0;

for(int i=1;i<[Link];i++){

profit=[Link](profit, prices[i]-min);

min=[Link](min, prices[i]);

return profit;

22. Buy & Sell Stock (Multiple Transactions)

static int maxProfitMultiple(int[] a){

int profit=0;

for(int i=1;i<[Link];i++)

if(a[i]>a[i-1]) profit+=a[i]-a[i-1];

return profit;

23. Chocolate Distribution Problem

static int minDiff(int[] a,int m){

[Link](a);

int res=Integer.MAX_VALUE;

for(int i=0;i+m-1<[Link];i++)

res=[Link](res,a[i+m-1]-a[i]);

return res;

}
24. Equilibrium Index

static int equilibrium(int[] a){

int sum=0,left=0;

for(int x:a) sum+=x;

for(int i=0;i<[Link];i++){

sum-=a[i];

if(left==sum) return i;

left+=a[i];

return -1;

25. Leaders in an Array

static List<Integer> leaders(int[] a){

List<Integer> res=new ArrayList<>();

int max=Integer.MIN_VALUE;

for(int i=[Link]-1;i>=0;i--){

if(a[i]>max){

[Link](a[i]);

max=a[i];

return res;

26. Trapping Rain Water

static int trap(int[] h){

int l=0,r=[Link]-1,leftMax=0,rightMax=0,water=0;
while(l<r){

if(h[l]<h[r]){

leftMax=[Link](leftMax,h[l]);

water+=leftMax-h[l++];

}else{

rightMax=[Link](rightMax,h[r]);

water+=rightMax-h[r--];

return water;

27. Dutch National Flag (0,1,2 Sort)

static void sort012(int[] a){

int low=0,mid=0,high=[Link]-1;

while(mid<=high){

if(a[mid]==0){

swap(a,low++,mid++);

}else if(a[mid]==1){

mid++;

}else{

swap(a,mid,high--);

static void swap(int[] a,int i,int j){

int t=a[i]; a[i]=a[j]; a[j]=t;

}
28. Search in Rotated Sorted Array

static int search(int[] a,int t){

int l=0,r=[Link]-1;

while(l<=r){

int m=(l+r)/2;

if(a[m]==t) return m;

if(a[l]<=a[m]){

if(t>=a[l] && t<a[m]) r=m-1;

else l=m+1;

}else{

if(t>a[m] && t<=a[r]) l=m+1;

else r=m-1;

return -1;

29. Find Minimum in Rotated Sorted Array

static int findMin(int[] a){

int l=0,r=[Link]-1;

while(l<r){

int m=(l+r)/2;

if(a[m]>a[r]) l=m+1;

else r=m;

return a[l];

}
30. Binary Search

static int binarySearch(int[] a,int t){

int l=0,r=[Link]-1;

while(l<=r){

int m=(l+r)/2;

if(a[m]==t) return m;

if(a[m]<t) l=m+1;

else r=m-1;

return -1;

31. First Occurrence (Binary Search)

static int firstOcc(int[] a,int t){

int l=0,r=[Link]-1,res=-1;

while(l<=r){

int m=(l+r)/2;

if(a[m]==t){ res=m; r=m-1; }

else if(a[m]<t) l=m+1;

else r=m-1;

return res;

32. Last Occurrence

static int lastOcc(int[] a,int t){

int l=0,r=[Link]-1,res=-1;
while(l<=r){

int m=(l+r)/2;

if(a[m]==t){ res=m; l=m+1; }

else if(a[m]<t) l=m+1;

else r=m-1;

return res;

33. Count Occurrences

static int countOcc(int[] a,int t){

int first=firstOcc(a,t);

if(first==-1) return 0;

return lastOcc(a,t)-first+1;

34. Prefix Sum Array

static int[] prefixSum(int[] a){

int[] p=new int[[Link]];

p[0]=a[0];

for(int i=1;i<[Link];i++)

p[i]=p[i-1]+a[i];

return p;

35. Range Sum Query

static int rangeSum(int[] p,int l,int r){

return l==0 ? p[r] : p[r]-p[l-1];


}

36. Maximum Product Subarray

static int maxProduct(int[] a){

int max=a[0],min=a[0],res=a[0];

for(int i=1;i<[Link];i++){

if(a[i]<0){

int t=max; max=min; min=t;

max=[Link](a[i],max*a[i]);

min=[Link](a[i],min*a[i]);

res=[Link](res,max);

return res;

37. Find All Pairs with Given Sum

static void pairSum(int[] a,int k){

HashSet<Integer> set=new HashSet<>();

for(int x:a){

if([Link](k-x))

[Link](x+" "+(k-x));

[Link](x);

38. Subarray with Maximum Length (Sum = K)

static int maxLen(int[] a,int k){


Map<Integer,Integer> map=new HashMap<>();

int sum=0,max=0;

for(int i=0;i<[Link];i++){

sum+=a[i];

if(sum==k) max=i+1;

if(![Link](sum))

[Link](sum,i);

if([Link](sum-k))

max=[Link](max,[Link](sum-k));

return max;

39. Kth Largest Element

static int kthLargest(int[] a,int k){

PriorityQueue<Integer> pq=new PriorityQueue<>();

for(int x:a){

[Link](x);

if([Link]()>k) [Link]();

return [Link]();

40. Kth Smallest Element

static int kthSmallest(int[] a,int k){

PriorityQueue<Integer> pq=

new PriorityQueue<>([Link]());

for(int x:a){
[Link](x);

if([Link]()>k) [Link]();

return [Link]();

41. Merge Two Sorted Arrays (Without Extra Space – Interview Favorite)

static void merge(int[] a,int[] b){

int i=[Link]-1, j=0;

while(i>=0 && j<[Link]){

if(a[i]>b[j]){

int t=a[i]; a[i]=b[j]; b[j]=t;

i--; j++;

}else break;

[Link](a);

[Link](b);

42. Merge Overlapping Intervals

static int[][] mergeIntervals(int[][] in){

[Link](in,(a,b)->a[0]-b[0]);

List<int[]> res=new ArrayList<>();

int[] cur=in[0];

for(int i=1;i<[Link];i++){

if(in[i][0]<=cur[1])

cur[1]=[Link](cur[1],in[i][1]);

else{
[Link](cur);

cur=in[i];

[Link](cur);

return [Link](new int[[Link]()][]);

43. Find Duplicate (No Extra Space)

static int findDuplicate(int[] a){

int slow=a[0], fast=a[0];

do{

slow=a[slow];

fast=a[a[fast]];

}while(slow!=fast);

fast=a[0];

while(slow!=fast){

slow=a[slow];

fast=a[fast];

return slow;

44. Find Missing & Repeating Number

static int[] missingRepeating(int[] a){

int n=[Link];

int xor=0;

for(int i=0;i<n;i++){
xor^=a[i];

xor^=(i+1);

int rsb=xor & -xor;

int x=0,y=0;

for(int i=0;i<n;i++){

if((a[i]&rsb)!=0) x^=a[i];

else y^=a[i];

if(((i+1)&rsb)!=0) x^=(i+1);

else y^=(i+1);

for(int v:a)

if(v==x) return new int[]{x,y};

return new int[]{y,x};

45. Rotate Matrix 90° Clockwise

static void rotateMatrix(int[][] m){

int n=[Link];

for(int i=0;i<n;i++)

for(int j=i;j<n;j++){

int t=m[i][j];

m[i][j]=m[j][i];

m[j][i]=t;

for(int i=0;i<n;i++)

reverseRow(m[i]);

}
static void reverseRow(int[] r){

int l=0,h=[Link]-1;

while(l<h){

int t=r[l]; r[l]=r[h]; r[h]=t;

l++; h--;

46. Spiral Matrix Traversal

static List<Integer> spiral(int[][] a){

List<Integer> res=new ArrayList<>();

int top=0,bottom=[Link]-1,left=0,right=a[0].length-1;

while(top<=bottom && left<=right){

for(int i=left;i<=right;i++) [Link](a[top][i]);

top++;

for(int i=top;i<=bottom;i++) [Link](a[i][right]);

right--;

if(top<=bottom)

for(int i=right;i>=left;i--) [Link](a[bottom][i]);

bottom--;

if(left<=right)

for(int i=bottom;i>=top;i--) [Link](a[i][left]);

left++;

return res;

47. Majority Elements (> n/3 times)


static List<Integer> majorityNby3(int[] a){

int c1=0,c2=0,n1=0,n2=0;

for(int x:a){

if(x==n1) c1++;

else if(x==n2) c2++;

else if(c1==0){ n1=x; c1=1; }

else if(c2==0){ n2=x; c2=1; }

else{ c1--; c2--; }

c1=0; c2=0;

for(int x:a){

if(x==n1) c1++;

else if(x==n2) c2++;

List<Integer> res=new ArrayList<>();

if(c1>[Link]/3) [Link](n1);

if(c2>[Link]/3) [Link](n2);

return res;

48. Maximum Circular Subarray Sum

static int maxCircularSum(int[] a){

int maxKadane=kadane(a);

int total=0;

for(int i=0;i<[Link];i++){

total+=a[i];

a[i]=-a[i];

}
int minKadane=kadane(a);

return total+minKadane==0?maxKadane:[Link](maxKadane,total+minKadane);

static int kadane(int[] a){

int max=a[0],cur=a[0];

for(int i=1;i<[Link];i++){

cur=[Link](a[i],cur+a[i]);

max=[Link](max,cur);

return max;

49. Subarray with Equal 0s and 1s

static int longest01(int[] a){

Map<Integer,Integer> map=new HashMap<>();

int sum=0,max=0;

[Link](0,-1);

for(int i=0;i<[Link];i++){

sum+= (a[i]==0?-1:1);

if([Link](sum))

max=[Link](max,[Link](sum));

else [Link](sum,i);

return max;

50. Minimum Swaps to Sort

static int minSwaps(int[] a){


int n=[Link];

int[][] arr=new int[n][2];

for(int i=0;i<n;i++){

arr[i][0]=a[i];

arr[i][1]=i;

[Link](arr,[Link](o->o[0]));

boolean[] vis=new boolean[n];

int swaps=0;

for(int i=0;i<n;i++){

if(vis[i]||arr[i][1]==i) continue;

int j=i,cycle=0;

while(!vis[j]){

vis[j]=true;

j=arr[j][1];

cycle++;

swaps+=cycle-1;

return swaps;

51. Longest Consecutive Sequence

static int longestConsecutive(int[] a){

Set<Integer> set=new HashSet<>();

for(int x:a) [Link](x);

int max=0;

for(int x:set){
if(![Link](x-1)){

int curr=x,len=1;

while([Link](curr+1)){

curr++; len++;

max=[Link](max,len);

return max;

52. Partition Array Around Pivot

static void partition(int[] a,int p){

int j=0;

for(int i=0;i<[Link];i++){

if(a[i]<p){

int t=a[i]; a[i]=a[j]; a[j]=t;

j++;

53. Rearrange Array Alternately

static void rearrange(int[] a){

int n=[Link];

int max=a[n-1]+1;

int minIdx=0,maxIdx=n-1;

for(int i=0;i<n;i++){
if(i%2==0){

a[i]+= (a[maxIdx]%max)*max;

maxIdx--;

}else{

a[i]+= (a[minIdx]%max)*max;

minIdx++;

for(int i=0;i<n;i++)

a[i]/=max;

54. Count Inversions

static int countInversions(int[] a){

return mergeSort(a,0,[Link]-1);

static int mergeSort(int[] a,int l,int r){

int c=0;

if(l<r){

int m=(l+r)/2;

c+=mergeSort(a,l,m);

c+=mergeSort(a,m+1,r);

c+=merge(a,l,m,r);

return c;

static int merge(int[] a,int l,int m,int r){

int[] L=[Link](a,l,m+1);
int[] R=[Link](a,m+1,r+1);

int i=0,j=0,k=l,c=0;

while(i<[Link]&&j<[Link]){

if(L[i]<=R[j]) a[k++]=L[i++];

else{

a[k++]=R[j++];

c+=[Link]-i;

while(i<[Link]) a[k++]=L[i++];

while(j<[Link]) a[k++]=R[j++];

return c;

55. Median of Two Sorted Arrays

static double median(int[] a,int[] b){

int[] c=new int[[Link]+[Link]];

int i=0,j=0,k=0;

while(i<[Link]&&j<[Link])

c[k++]=a[i]<b[j]?a[i++]:b[j++];

while(i<[Link]) c[k++]=a[i++];

while(j<[Link]) c[k++]=b[j++];

int n=[Link];

return n%2==0?(c[n/2]+c[n/2-1])/2.0:c[n/2];

🔤 STRING QUESTIONS (61–100)


61. Reverse String

static String reverse(String s){

return new StringBuilder(s).reverse().toString();

62. Check Palindrome

static boolean isPalindrome(String s){

int l=0,r=[Link]()-1;

while(l<r)

if([Link](l++)!=[Link](r--)) return false;

return true;

63. Anagram Check

static boolean isAnagram(String a,String b){

if([Link]()!=[Link]()) return false;

int[] c=new int[26];

for(char x:[Link]()) c[x-'a']++;

for(char x:[Link]()) c[x-'a']--;

for(int x:c) if(x!=0) return false;

return true;

64. First Non-Repeating Character

static char firstUnique(String s){

int[] c=new int[256];

for(char x:[Link]()) c[x]++;

for(char x:[Link]())

if(c[x]==1) return x;

return '$';

}
65. Count Vowels

static int countVowels(String s){

int c=0;

for(char x:[Link]().toCharArray())

if("aeiou".indexOf(x)>=0) c++;

return c;

66. Longest Common Prefix

static String lcp(String[] a){

String p=a[0];

for(String s:a)

while(![Link](p))

p=[Link](0,[Link]()-1);

return p;

67. Remove Duplicate Characters

static String removeDuplicates(String s){

boolean[] seen=new boolean[256];

StringBuilder sb=new StringBuilder();

for(char c:[Link]())

if(!seen[c]){

seen[c]=true;

[Link](c);

return [Link]();

68. Reverse Words in Sentence

static String reverseWords(String s){


String[] w=[Link](" ");

StringBuilder sb=new StringBuilder();

for(int i=[Link]-1;i>=0;i--)

[Link](w[i]).append(" ");

return [Link]().trim();

69. Check Rotation of String

static boolean isRotation(String a,String b){

return [Link]()==[Link]() && (a+a).contains(b);

70. Longest Palindromic Substring

static String longestPalindrome(String s){

String res="";

for(int i=0;i<[Link]();i++){

res=max(res,expand(s,i,i));

res=max(res,expand(s,i,i+1));

return res;

static String expand(String s,int l,int r){

while(l>=0 && r<[Link]() && [Link](l)==[Link](r)){

l--; r++;

return [Link](l+1,r);

static String max(String a,String b){

return [Link]()>[Link]()?a:b;

}
71. Count Words in a String

static int countWords(String s){

if([Link]().isEmpty()) return 0;

return [Link]().split("\\s+").length;

72. Capitalize First Letter of Each Word

static String capitalize(String s){

String[] w=[Link](" ");

StringBuilder sb=new StringBuilder();

for(String x:w){

[Link]([Link]([Link](0)))

.append([Link](1)).append(" ");

return [Link]().trim();

73. Check Pangram

static boolean isPangram(String s){

boolean[] seen=new boolean[26];

for(char c:[Link]().toCharArray())

if(c>='a'&&c<='z') seen[c-'a']=true;

for(boolean b:seen) if(!b) return false;

return true;

74. Remove All Spaces

static String removeSpaces(String s){


return [Link]("\\s","");

75. String Compression (aaabb → a3b2)

static String compress(String s){

StringBuilder sb=new StringBuilder();

int cnt=1;

for(int i=1;i<=[Link]();i++){

if(i<[Link]() && [Link](i)==[Link](i-1))

cnt++;

else{

[Link]([Link](i-1)).append(cnt);

cnt=1;

return [Link]();

76. Check Valid Shuffle of Two Strings

static boolean isShuffle(String a,String b,String c){

if([Link]()+[Link]()!=[Link]()) return false;

int i=0,j=0,k=0;

while(k<[Link]()){

if(i<[Link]() && [Link](i)==[Link](k)) i++;

else if(j<[Link]() && [Link](j)==[Link](k)) j++;

else return false;

k++;

}
return true;

77. Smallest Window Containing All Characters

static String minWindow(String s,String t){

int[] map=new int[256];

for(char c:[Link]()) map[c]++;

int l=0,count=[Link](),minLen=Integer.MAX_VALUE,start=0;

for(int r=0;r<[Link]();r++){

if(map[[Link](r)]-- >0) count--;

while(count==0){

if(r-l+1<minLen){

minLen=r-l+1;

start=l;

if(map[[Link](l++)]++==0) count++;

return minLen==Integer.MAX_VALUE?"":[Link](start,start+minLen);

78. Longest Substring Without Repeating Characters

static int longestUnique(String s){

int[] map=new int[256];

int l=0,max=0;

for(int r=0;r<[Link]();r++){

map[[Link](r)]++;

while(map[[Link](r)]>1)
map[[Link](l++)]--;

max=[Link](max,r-l+1);

return max;

79. String to Integer (atoi)

static int atoi(String s){

int i=0,sign=1,res=0;

if([Link](0)=='-'){ sign=-1; i++; }

for(;i<[Link]();i++){

if(![Link]([Link](i))) break;

res=res*10+([Link](i)-'0');

return res*sign;

80. Integer to String

static String itoa(int n){

return [Link](n);

81. Character Frequency

static Map<Character,Integer> freq(String s){

Map<Character,Integer> map=new HashMap<>();

for(char c:[Link]())

[Link](c,[Link](c,0)+1);

return map;
}

82. Replace Character

static String replaceChar(String s,char a,char b){

return [Link](a,b);

83. Check Subsequence

static boolean isSubsequence(String a,String b){

int i=0,j=0;

while(i<[Link]() && j<[Link]()){

if([Link](i)==[Link](j)) i++;

j++;

return i==[Link]();

84. Lexicographically Smallest String After Swap

static String smallest(String s){

char[] c=[Link]();

int minIdx=0;

for(int i=1;i<[Link];i++)

if(c[i]<c[minIdx]) minIdx=i;

char t=c[0]; c[0]=c[minIdx]; c[minIdx]=t;

return new String(c);

85. Remove Adjacent Duplicates


static String removeAdj(String s){

Stack<Character> st=new Stack<>();

for(char c:[Link]()){

if(![Link]() && [Link]()==c) [Link]();

else [Link](c);

StringBuilder sb=new StringBuilder();

for(char c:st) [Link](c);

return [Link]();

86. Check Isomorphic Strings

static boolean isIsomorphic(String a,String b){

int[] m1=new int[256], m2=new int[256];

for(int i=0;i<[Link]();i++){

if(m1[[Link](i)]!=m2[[Link](i)]) return false;

m1[[Link](i)]=i+1;

m2[[Link](i)]=i+1;

return true;

87. Longest Common Subsequence (Length)

static int lcs(String a,String b){

int[][] dp=new int[[Link]()+1][[Link]()+1];

for(int i=1;i<=[Link]();i++)

for(int j=1;j<=[Link]();j++)

if([Link](i-1)==[Link](j-1))
dp[i][j]=1+dp[i-1][j-1];

else

dp[i][j]=[Link](dp[i-1][j],dp[i][j-1]);

return dp[[Link]()][[Link]()];

88. Check Palindrome Ignoring Special Characters

static boolean validPalindrome(String s){

int l=0,r=[Link]()-1;

while(l<r){

while(l<r && ![Link]([Link](l))) l++;

while(l<r && ![Link]([Link](r))) r--;

if([Link]([Link](l++))!=

[Link]([Link](r--))) return false;

return true;

89. Count Palindromic Substrings

static int countPal(String s){

int cnt=0;

for(int i=0;i<[Link]();i++){

cnt+=expand(s,i,i);

cnt+=expand(s,i,i+1);

return cnt;

static int expand(String s,int l,int r){


int c=0;

while(l>=0 && r<[Link]() && [Link](l--)==[Link](r++))

c++;

return c;

90. Longest Repeating Character Replacement

static int characterReplacement(String s,int k){

int[] c=new int[26];

int l=0,max=0,res=0;

for(int r=0;r<[Link]();r++){

max=[Link](max,++c[[Link](r)-'A']);

while(r-l+1-max>k)

c[[Link](l++)-'A']--;

res=[Link](res,r-l+1);

return res;

91. Remove Vowels

static String removeVowels(String s){

return [Link]("[aeiouAEIOU]","");

92. Check Rotation Using One Call

static boolean rotation(String a,String b){

return [Link]()==[Link]() && (a+a).contains(b);

}
93. Reverse Each Word

static String reverseWordsIndividually(String s){

String[] w=[Link](" ");

StringBuilder sb=new StringBuilder();

for(String x:w)

[Link](new StringBuilder(x).reverse()).append(" ");

return [Link]().trim();

94. Count Digits in String

static int countDigits(String s){

int c=0;

for(char x:[Link]())

if([Link](x)) c++;

return c;

95. Remove Character from String

static String removeChar(String s,char c){

return [Link]([Link](c),"");

96. Check If String Has All Unique Characters

static boolean allUnique(String s){

boolean[] seen=new boolean[256];

for(char c:[Link]()){

if(seen[c]) return false;


seen[c]=true;

return true;

97. Find Duplicate Characters

static Set<Character> duplicates(String s){

Set<Character> set=new HashSet<>();

Set<Character> dup=new HashSet<>();

for(char c:[Link]())

if(![Link](c)) [Link](c);

return dup;

98. Longest Common Prefix (Again – Very Common)

static String lcp(String[] a){

[Link](a);

String x=a[0], y=a[[Link]-1];

int i=0;

while(i<[Link]() && [Link](i)==[Link](i)) i++;

return [Link](0,i);

99. Check Balanced String (Only Letters Count)

static boolean balanced(String s){

int u=0,l=0;

for(char c:[Link]()){

if([Link](c)) u++;
if([Link](c)) l++;

return u==l;

100. Remove Consecutive Characters

static String removeConsecutive(String s){

StringBuilder sb=new StringBuilder();

[Link]([Link](0));

for(int i=1;i<[Link]();i++)

if([Link](i)!=[Link](i-1))

[Link]([Link](i));

return [Link]();

Vous aimerez peut-être aussi