面试考到的两个算法题

1、把一个32位以内的十进制的正整数数转换为二进制:

import java.util.ArrayList;
import java.util.List;

public class Solution4 {
    
    
    public static void main(String[] args) {
    
    
        int n=1000000000;
        List<Integer> list = new ArrayList<>();
        while(n!=0){
    
    
            list.add(n%2);
            n = n/2;
        }

        for (int i= list.size()-1;i>=0;i--){
    
    
            System.out.print(list.get(i));
        }

    }
}

2、给定两个字符串,求最长相同字串

public class MaxString {
    
    
        public String getMaxSame(String s1,String s2){
    
    
            int count=0;
            int max=0;//最大值
            int maxi=0;//短字符串最大值最后下标
            int maxj=0;//长字符串最大值最后下标
            int n=s1.length()>s2.length()?s2.length():s1.length();
            int m=s1.length()<s2.length()?s2.length():s1.length();
            for(int i=0;i<n;i++){
    
    
                count=0;
                int l=i;
                for(int j=0;j<m&&l<n;j++){
    
    

                    if (s1.charAt(l)==s2.charAt(j)) {
    
    
                        count++;

                        if (count>max) {
    
    
                            max=count;
                            maxj=j;
                            maxi=l;

                        }
                        l++;
                    }
                    else{
    
    
                        count=0;
                        l=i;
                    }
                }
            }
            String a=s1.length()>s2.length()?s2:s1;
            return a.substring(maxi-max+1,maxi+1);
        }
    }

猜你喜欢

转载自blog.csdn.net/m0_50654102/article/details/115404118